util.c 911 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include <u.h>
  2. #include <libc.h>
  3. #include <venti.h>
  4. int
  5. vtGetUint16(uchar *p)
  6. {
  7. return (p[0]<<8)|p[1];
  8. }
  9. ulong
  10. vtGetUint32(uchar *p)
  11. {
  12. return (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3];
  13. }
  14. uvlong
  15. vtGetUint48(uchar *p)
  16. {
  17. return ((uvlong)p[0]<<40)|((uvlong)p[1]<<32)|
  18. (p[2]<<24)|(p[3]<<16)|(p[4]<<8)|p[5];
  19. }
  20. uvlong
  21. vtGetUint64(uchar *p)
  22. {
  23. return ((uvlong)p[0]<<56)|((uvlong)p[1]<<48)|((uvlong)p[2]<<40)|
  24. ((uvlong)p[3]<<32)|(p[4]<<24)|(p[5]<<16)|(p[6]<<8)|p[7];
  25. }
  26. void
  27. vtPutUint16(uchar *p, int x)
  28. {
  29. p[0] = x>>8;
  30. p[1] = x;
  31. }
  32. void
  33. vtPutUint32(uchar *p, ulong x)
  34. {
  35. p[0] = x>>24;
  36. p[1] = x>>16;
  37. p[2] = x>>8;
  38. p[3] = x;
  39. }
  40. void
  41. vtPutUint48(uchar *p, uvlong x)
  42. {
  43. p[0] = x>>40;
  44. p[1] = x>>32;
  45. p[2] = x>>24;
  46. p[3] = x>>16;
  47. p[4] = x>>8;
  48. p[5] = x;
  49. }
  50. void
  51. vtPutUint64(uchar *p, uvlong x)
  52. {
  53. p[0] = x>>56;
  54. p[1] = x>>48;
  55. p[2] = x>>40;
  56. p[3] = x>>32;
  57. p[4] = x>>24;
  58. p[5] = x>>16;
  59. p[6] = x>>8;
  60. p[7] = x;
  61. }