dat.h 1.6 KB

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