dat.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /* dat.h: include file for vblade AoE target */
  2. #define nil ((void *)0)
  3. /*
  4. * tunable variables
  5. */
  6. enum {
  7. FWV = 0x4000, // Firmware version
  8. };
  9. #undef major
  10. #undef minor
  11. #undef makedev
  12. #define major(x) ((x) >> 24 & 0xFF)
  13. #define minor(x) ((x) & 0xffffff)
  14. #define makedev(x, y) ((x) << 24 | (y))
  15. typedef unsigned char uchar;
  16. //typedef unsigned short ushort;
  17. //typedef unsigned long ulong;
  18. typedef long long vlong;
  19. typedef struct Aoehdr Aoehdr;
  20. typedef struct Ata Ata;
  21. typedef struct Conf Conf;
  22. typedef struct Ataregs Ataregs;
  23. struct Ataregs
  24. {
  25. vlong lba;
  26. uchar cmd;
  27. uchar status;
  28. uchar err;
  29. uchar feature;
  30. uchar sectors;
  31. };
  32. struct Aoehdr
  33. {
  34. uchar dst[6];
  35. uchar src[6];
  36. ushort type;
  37. uchar flags;
  38. uchar error;
  39. ushort maj;
  40. uchar min;
  41. uchar cmd;
  42. uchar tag[4];
  43. };
  44. struct Ata
  45. {
  46. Aoehdr h;
  47. uchar aflag;
  48. uchar err;
  49. uchar sectors;
  50. uchar cmd;
  51. uchar lba[6];
  52. uchar resvd[2];
  53. uchar data[1024];
  54. };
  55. struct Conf
  56. {
  57. Aoehdr h;
  58. ushort bufcnt;
  59. ushort firmware;
  60. uchar filler;
  61. uchar vercmd;
  62. ushort len;
  63. uchar data[1024];
  64. };
  65. enum {
  66. AoEver = 1,
  67. ATAcmd = 0, // command codes
  68. Config,
  69. Resp = (1<<3), // flags
  70. Error = (1<<2),
  71. BadCmd = 1,
  72. BadArg,
  73. DevUnavailable,
  74. ConfigErr,
  75. BadVersion,
  76. Write = (1<<0),
  77. Async = (1<<1),
  78. Device = (1<<4),
  79. Extend = (1<<6),
  80. Qread = 0,
  81. Qtest,
  82. Qprefix,
  83. Qset,
  84. Qfset,
  85. Nretries = 3,
  86. Bufcount = 32,
  87. };
  88. int shelf, slot;
  89. ulong aoetag;
  90. uchar mac[6];
  91. int bfd; // block file descriptor
  92. int sfd; // socket file descriptor
  93. vlong size; // size of vblade
  94. char *progname;