acidlib 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706
  1. sizeof_1_ = 8;
  2. aggr _1_
  3. {
  4. 'D' 0 quot;
  5. 'D' 4 rem;
  6. };
  7. defn
  8. _1_(addr) {
  9. complex _1_ addr;
  10. print(" quot ", addr.quot, "\n");
  11. print(" rem ", addr.rem, "\n");
  12. };
  13. sizeof_2_ = 8;
  14. aggr _2_
  15. {
  16. 'D' 0 quot;
  17. 'D' 4 rem;
  18. };
  19. defn
  20. _2_(addr) {
  21. complex _2_ addr;
  22. print(" quot ", addr.quot, "\n");
  23. print(" rem ", addr.rem, "\n");
  24. };
  25. sizeofsigaction = 12;
  26. aggr sigaction
  27. {
  28. 'X' 0 sa_handler;
  29. 'D' 4 sa_mask;
  30. 'D' 8 sa_flags;
  31. };
  32. defn
  33. sigaction(addr) {
  34. complex sigaction addr;
  35. print(" sa_handler ", addr.sa_handler\X, "\n");
  36. print(" sa_mask ", addr.sa_mask, "\n");
  37. print(" sa_flags ", addr.sa_flags, "\n");
  38. };
  39. sizeof_3_ = 32;
  40. aggr _3_
  41. {
  42. 'D' 0 fd;
  43. 'C' 4 flags;
  44. 'C' 5 state;
  45. 'X' 8 buf;
  46. 'X' 12 rp;
  47. 'X' 16 wp;
  48. 'X' 20 lp;
  49. 'U' 24 bufl;
  50. 'a' 28 unbuf;
  51. };
  52. defn
  53. _3_(addr) {
  54. complex _3_ addr;
  55. print(" fd ", addr.fd, "\n");
  56. print(" flags ", addr.flags, "\n");
  57. print(" state ", addr.state, "\n");
  58. print(" buf ", addr.buf\X, "\n");
  59. print(" rp ", addr.rp\X, "\n");
  60. print(" wp ", addr.wp\X, "\n");
  61. print(" lp ", addr.lp\X, "\n");
  62. print(" bufl ", addr.bufl, "\n");
  63. print(" unbuf ", addr.unbuf, "\n");
  64. };
  65. sizeof_4_ = 4;
  66. aggr _4_
  67. {
  68. 'D' 0 val;
  69. };
  70. defn
  71. _4_(addr) {
  72. complex _4_ addr;
  73. print(" val ", addr.val, "\n");
  74. };
  75. sizeoftimeval = 8;
  76. aggr timeval
  77. {
  78. 'D' 0 tv_sec;
  79. 'D' 4 tv_usec;
  80. };
  81. defn
  82. timeval(addr) {
  83. complex timeval addr;
  84. print(" tv_sec ", addr.tv_sec, "\n");
  85. print(" tv_usec ", addr.tv_usec, "\n");
  86. };
  87. sizeoftimezone = 8;
  88. aggr timezone
  89. {
  90. 'D' 0 tz_minuteswest;
  91. 'D' 4 tz_dsttime;
  92. };
  93. defn
  94. timezone(addr) {
  95. complex timezone addr;
  96. print(" tz_minuteswest ", addr.tz_minuteswest, "\n");
  97. print(" tz_dsttime ", addr.tz_dsttime, "\n");
  98. };
  99. sizeoffd_set = 12;
  100. aggr fd_set
  101. {
  102. 'a' 0 fds_bits;
  103. };
  104. defn
  105. fd_set(addr) {
  106. complex fd_set addr;
  107. mem(addr, "3X");
  108. };
  109. sizeofstat = 28;
  110. aggr stat
  111. {
  112. 'u' 0 st_dev;
  113. 'u' 2 st_ino;
  114. 'u' 4 st_mode;
  115. 'd' 6 st_nlink;
  116. 'd' 8 st_uid;
  117. 'd' 10 st_gid;
  118. 'D' 12 st_size;
  119. 'D' 16 st_atime;
  120. 'D' 20 st_mtime;
  121. 'D' 24 st_ctime;
  122. };
  123. defn
  124. stat(addr) {
  125. complex stat addr;
  126. print(" st_dev ", addr.st_dev, "\n");
  127. print(" st_ino ", addr.st_ino, "\n");
  128. print(" st_mode ", addr.st_mode, "\n");
  129. print(" st_nlink ", addr.st_nlink, "\n");
  130. print(" st_uid ", addr.st_uid, "\n");
  131. print(" st_gid ", addr.st_gid, "\n");
  132. print(" st_size ", addr.st_size, "\n");
  133. print(" st_atime ", addr.st_atime, "\n");
  134. print(" st_mtime ", addr.st_mtime, "\n");
  135. print(" st_ctime ", addr.st_ctime, "\n");
  136. };
  137. sizeofflock = 16;
  138. aggr flock
  139. {
  140. 'd' 0 l_type;
  141. 'd' 2 l_whence;
  142. 'D' 4 l_start;
  143. 'D' 8 l_len;
  144. 'D' 12 l_pid;
  145. };
  146. defn
  147. flock(addr) {
  148. complex flock addr;
  149. print(" l_type ", addr.l_type, "\n");
  150. print(" l_whence ", addr.l_whence, "\n");
  151. print(" l_start ", addr.l_start, "\n");
  152. print(" l_len ", addr.l_len, "\n");
  153. print(" l_pid ", addr.l_pid, "\n");
  154. };
  155. sizeofdirent = 28;
  156. aggr dirent
  157. {
  158. 'a' 0 d_name;
  159. };
  160. defn
  161. dirent(addr) {
  162. complex dirent addr;
  163. print(" d_name ", addr.d_name, "\n");
  164. };
  165. sizeof_dirdesc = 16;
  166. aggr _dirdesc
  167. {
  168. 'D' 0 dd_fd;
  169. 'D' 4 dd_loc;
  170. 'D' 8 dd_size;
  171. 'X' 12 dd_buf;
  172. };
  173. defn
  174. _dirdesc(addr) {
  175. complex _dirdesc addr;
  176. print(" dd_fd ", addr.dd_fd, "\n");
  177. print(" dd_loc ", addr.dd_loc, "\n");
  178. print(" dd_size ", addr.dd_size, "\n");
  179. print(" dd_buf ", addr.dd_buf\X, "\n");
  180. };
  181. sizeoftermios = 28;
  182. aggr termios
  183. {
  184. 'U' 0 c_iflag;
  185. 'U' 4 c_oflag;
  186. 'U' 8 c_cflag;
  187. 'U' 12 c_lflag;
  188. 'a' 16 c_cc;
  189. };
  190. defn
  191. termios(addr) {
  192. complex termios addr;
  193. print(" c_iflag ", addr.c_iflag, "\n");
  194. print(" c_oflag ", addr.c_oflag, "\n");
  195. print(" c_cflag ", addr.c_cflag, "\n");
  196. print(" c_lflag ", addr.c_lflag, "\n");
  197. print(" c_cc ", addr.c_cc, "\n");
  198. };
  199. sizeofutsname = 20;
  200. aggr utsname
  201. {
  202. 'X' 0 sysname;
  203. 'X' 4 nodename;
  204. 'X' 8 release;
  205. 'X' 12 version;
  206. 'X' 16 machine;
  207. };
  208. defn
  209. utsname(addr) {
  210. complex utsname addr;
  211. print(" sysname ", addr.sysname\X, "\n");
  212. print(" nodename ", addr.nodename\X, "\n");
  213. print(" release ", addr.release\X, "\n");
  214. print(" version ", addr.version\X, "\n");
  215. print(" machine ", addr.machine\X, "\n");
  216. };
  217. sizeofMuxbuf = 16400;
  218. aggr Muxbuf
  219. {
  220. 'D' 0 n;
  221. 'X' 4 putnext;
  222. 'X' 8 getnext;
  223. 'b' 12 fd;
  224. 'b' 13 eof;
  225. 'b' 14 roomwait;
  226. 'b' 15 datawait;
  227. 'a' 16 data;
  228. };
  229. defn
  230. Muxbuf(addr) {
  231. complex Muxbuf addr;
  232. print(" n ", addr.n, "\n");
  233. print(" putnext ", addr.putnext\X, "\n");
  234. print(" getnext ", addr.getnext\X, "\n");
  235. print(" fd ", addr.fd, "\n");
  236. print(" eof ", addr.eof, "\n");
  237. print(" roomwait ", addr.roomwait, "\n");
  238. print(" datawait ", addr.datawait, "\n");
  239. print(" data ", addr.data, "\n");
  240. };
  241. sizeofFdinfo = 16;
  242. aggr Fdinfo
  243. {
  244. 'U' 0 flags;
  245. 'U' 4 oflags;
  246. 'X' 8 name;
  247. 'A' Muxbuf 12 buf;
  248. };
  249. defn
  250. Fdinfo(addr) {
  251. complex Fdinfo addr;
  252. print(" flags ", addr.flags, "\n");
  253. print(" oflags ", addr.oflags, "\n");
  254. print(" name ", addr.name\X, "\n");
  255. print(" buf ", addr.buf\X, "\n");
  256. };
  257. sizeofWaitmsg = 112;
  258. aggr Waitmsg
  259. {
  260. 'a' 0 pid;
  261. 'a' 12 time;
  262. 'a' 48 msg;
  263. };
  264. defn
  265. Waitmsg(addr) {
  266. complex Waitmsg addr;
  267. print(" pid ", addr.pid, "\n");
  268. print(" time ", addr.time, "\n");
  269. print(" msg ", addr.msg, "\n");
  270. };
  271. sizeof_5_ = 8;
  272. aggr _5_
  273. {
  274. 'D' 0 hlength;
  275. 'D' 4 length;
  276. };
  277. defn
  278. _5_(addr) {
  279. complex _5_ addr;
  280. print(" hlength ", addr.hlength, "\n");
  281. print(" length ", addr.length, "\n");
  282. };
  283. sizeof_6_ = 8;
  284. aggr _6_
  285. {
  286. 'a' 0 clength;
  287. 'D' 0 vlength;
  288. {
  289. 'D' 0 hlength;
  290. 'D' 4 length;
  291. };
  292. };
  293. defn
  294. _6_(addr) {
  295. complex _6_ addr;
  296. print(" clength ", addr.clength, "\n");
  297. print(" vlength ", addr.vlength, "\n");
  298. print("_5_ {\n");
  299. _5_(addr+0);
  300. print("}\n");
  301. };
  302. sizeofQid = 8;
  303. aggr Qid
  304. {
  305. 'U' 0 path;
  306. 'U' 4 vers;
  307. };
  308. defn
  309. Qid(addr) {
  310. complex Qid addr;
  311. print(" path ", addr.path, "\n");
  312. print(" vers ", addr.vers, "\n");
  313. };
  314. sizeofDir = 116;
  315. aggr Dir
  316. {
  317. 'a' 0 name;
  318. 'a' 28 uid;
  319. 'a' 56 gid;
  320. Qid 84 qid;
  321. 'U' 92 mode;
  322. 'D' 96 atime;
  323. 'D' 100 mtime;
  324. {
  325. 'a' 104 clength;
  326. 'D' 104 vlength;
  327. {
  328. 'D' 104 hlength;
  329. 'D' 108 length;
  330. };
  331. };
  332. 'd' 112 type;
  333. 'd' 114 dev;
  334. };
  335. defn
  336. Dir(addr) {
  337. complex Dir addr;
  338. print(" name ", addr.name, "\n");
  339. print(" uid ", addr.uid, "\n");
  340. print(" gid ", addr.gid, "\n");
  341. print("Qid qid {\n");
  342. Qid(addr.qid);
  343. print("}\n");
  344. print(" mode ", addr.mode, "\n");
  345. print(" atime ", addr.atime, "\n");
  346. print(" mtime ", addr.mtime, "\n");
  347. print("_6_ {\n");
  348. _6_(addr+104);
  349. print("}\n");
  350. print(" type ", addr.type, "\n");
  351. print(" dev ", addr.dev, "\n");
  352. };
  353. sizeof_7_ = 28;
  354. aggr _7_
  355. {
  356. 'u' 0 oldtag;
  357. Qid 4 qid;
  358. 'a' 12 rauth;
  359. };
  360. defn
  361. _7_(addr) {
  362. complex _7_ addr;
  363. print(" oldtag ", addr.oldtag, "\n");
  364. print("Qid qid {\n");
  365. Qid(addr.qid);
  366. print("}\n");
  367. print(" rauth ", addr.rauth, "\n");
  368. };
  369. sizeof_8_ = 144;
  370. aggr _8_
  371. {
  372. 'a' 0 uname;
  373. 'a' 28 aname;
  374. 'a' 56 ticket;
  375. 'a' 128 auth;
  376. };
  377. defn
  378. _8_(addr) {
  379. complex _8_ addr;
  380. print(" uname ", addr.uname, "\n");
  381. print(" aname ", addr.aname, "\n");
  382. print(" ticket ", addr.ticket, "\n");
  383. print(" auth ", addr.auth, "\n");
  384. };
  385. sizeof_9_ = 148;
  386. aggr _9_
  387. {
  388. 'a' 0 ename;
  389. 'a' 64 authid;
  390. 'a' 92 authdom;
  391. 'a' 140 chal;
  392. };
  393. defn
  394. _9_(addr) {
  395. complex _9_ addr;
  396. print(" ename ", addr.ename, "\n");
  397. print(" authid ", addr.authid, "\n");
  398. print(" authdom ", addr.authdom, "\n");
  399. print(" chal ", addr.chal, "\n");
  400. };
  401. sizeof_10_ = 36;
  402. aggr _10_
  403. {
  404. 'D' 0 perm;
  405. 'd' 4 newfid;
  406. 'a' 6 name;
  407. 'C' 34 mode;
  408. };
  409. defn
  410. _10_(addr) {
  411. complex _10_ addr;
  412. print(" perm ", addr.perm, "\n");
  413. print(" newfid ", addr.newfid, "\n");
  414. print(" name ", addr.name, "\n");
  415. print(" mode ", addr.mode, "\n");
  416. };
  417. sizeof_11_ = 12;
  418. aggr _11_
  419. {
  420. 'D' 0 offset;
  421. 'D' 4 count;
  422. 'X' 8 data;
  423. };
  424. defn
  425. _11_(addr) {
  426. complex _11_ addr;
  427. print(" offset ", addr.offset, "\n");
  428. print(" count ", addr.count, "\n");
  429. print(" data ", addr.data\X, "\n");
  430. };
  431. sizeof_12_ = 116;
  432. aggr _12_
  433. {
  434. 'a' 0 stat;
  435. };
  436. defn
  437. _12_(addr) {
  438. complex _12_ addr;
  439. print(" stat ", addr.stat, "\n");
  440. };
  441. sizeof_13_ = 148;
  442. aggr _13_
  443. {
  444. {
  445. 'u' 0 oldtag;
  446. Qid 4 qid;
  447. 'a' 12 rauth;
  448. };
  449. {
  450. 'a' 0 uname;
  451. 'a' 28 aname;
  452. 'a' 56 ticket;
  453. 'a' 128 auth;
  454. };
  455. {
  456. 'a' 0 ename;
  457. 'a' 64 authid;
  458. 'a' 92 authdom;
  459. 'a' 140 chal;
  460. };
  461. {
  462. 'D' 0 perm;
  463. 'd' 4 newfid;
  464. 'a' 6 name;
  465. 'C' 34 mode;
  466. };
  467. {
  468. 'D' 0 offset;
  469. 'D' 4 count;
  470. 'X' 8 data;
  471. };
  472. {
  473. 'a' 0 stat;
  474. };
  475. };
  476. defn
  477. _13_(addr) {
  478. complex _13_ addr;
  479. print("_7_ {\n");
  480. _7_(addr+0);
  481. print("}\n");
  482. print("_8_ {\n");
  483. _8_(addr+0);
  484. print("}\n");
  485. print("_9_ {\n");
  486. _9_(addr+0);
  487. print("}\n");
  488. print("_10_ {\n");
  489. _10_(addr+0);
  490. print("}\n");
  491. print("_11_ {\n");
  492. _11_(addr+0);
  493. print("}\n");
  494. print("_12_ {\n");
  495. _12_(addr+0);
  496. print("}\n");
  497. };
  498. sizeofFcall = 156;
  499. aggr Fcall
  500. {
  501. 'C' 0 type;
  502. 'd' 2 fid;
  503. 'u' 4 tag;
  504. {
  505. {
  506. 'u' 8 oldtag;
  507. Qid 12 qid;
  508. 'a' 20 rauth;
  509. };
  510. {
  511. 'a' 8 uname;
  512. 'a' 36 aname;
  513. 'a' 64 ticket;
  514. 'a' 136 auth;
  515. };
  516. {
  517. 'a' 8 ename;
  518. 'a' 72 authid;
  519. 'a' 100 authdom;
  520. 'a' 148 chal;
  521. };
  522. {
  523. 'D' 8 perm;
  524. 'd' 12 newfid;
  525. 'a' 14 name;
  526. 'C' 42 mode;
  527. };
  528. {
  529. 'D' 8 offset;
  530. 'D' 12 count;
  531. 'X' 16 data;
  532. };
  533. {
  534. 'a' 8 stat;
  535. };
  536. };
  537. };
  538. defn
  539. Fcall(addr) {
  540. complex Fcall addr;
  541. print(" type ", addr.type, "\n");
  542. print(" fid ", addr.fid, "\n");
  543. print(" tag ", addr.tag, "\n");
  544. print("_13_ {\n");
  545. _13_(addr+8);
  546. print("}\n");
  547. };
  548. sizeofMuxbuf = 16400;
  549. aggr Muxbuf
  550. {
  551. 'D' 0 n;
  552. 'X' 4 putnext;
  553. 'X' 8 getnext;
  554. 'b' 12 fd;
  555. 'b' 13 eof;
  556. 'b' 14 roomwait;
  557. 'b' 15 datawait;
  558. 'a' 16 data;
  559. };
  560. defn
  561. Muxbuf(addr) {
  562. complex Muxbuf addr;
  563. print(" n ", addr.n, "\n");
  564. print(" putnext ", addr.putnext\X, "\n");
  565. print(" getnext ", addr.getnext\X, "\n");
  566. print(" fd ", addr.fd, "\n");
  567. print(" eof ", addr.eof, "\n");
  568. print(" roomwait ", addr.roomwait, "\n");
  569. print(" datawait ", addr.datawait, "\n");
  570. print(" data ", addr.data, "\n");
  571. };
  572. sizeofFdinfo = 16;
  573. aggr Fdinfo
  574. {
  575. 'U' 0 flags;
  576. 'U' 4 oflags;
  577. 'X' 8 name;
  578. 'A' Muxbuf 12 buf;
  579. };
  580. defn
  581. Fdinfo(addr) {
  582. complex Fdinfo addr;
  583. print(" flags ", addr.flags, "\n");
  584. print(" oflags ", addr.oflags, "\n");
  585. print(" name ", addr.name\X, "\n");
  586. print(" buf ", addr.buf\X, "\n");
  587. };
  588. sizeofWaitmsg = 112;
  589. aggr Waitmsg
  590. {
  591. 'a' 0 pid;
  592. 'a' 12 time;
  593. 'a' 48 msg;
  594. };
  595. defn
  596. Waitmsg(addr) {
  597. complex Waitmsg addr;
  598. print(" pid ", addr.pid, "\n");
  599. print(" time ", addr.time, "\n");
  600. print(" msg ", addr.msg, "\n");
  601. };
  602. sizeofMuxseg = 65640;
  603. aggr Muxseg
  604. {
  605. _4_ 0 lock;
  606. 'D' 4 curfds;
  607. 'D' 8 selwait;
  608. 'D' 12 waittime;
  609. fd_set 16 rwant;
  610. fd_set 28 ewant;
  611. 'a' 40 bufs;
  612. };
  613. defn
  614. Muxseg(addr) {
  615. complex Muxseg addr;
  616. print("_4_ lock {\n");
  617. _4_(addr.lock);
  618. print("}\n");
  619. print(" curfds ", addr.curfds, "\n");
  620. print(" selwait ", addr.selwait, "\n");
  621. print(" waittime ", addr.waittime, "\n");
  622. print("fd_set rwant {\n");
  623. fd_set(addr.rwant);
  624. print("}\n");
  625. print("fd_set ewant {\n");
  626. fd_set(addr.ewant);
  627. print("}\n");
  628. print(" bufs ", addr.bufs, "\n");
  629. };
  630. complex Muxseg mux;
  631. complex Fdinfo _startbuf:f;
  632. complex Muxbuf _startbuf:b;
  633. complex Muxbuf _copyproc:b;
  634. complex Muxbuf _readbuf:b;
  635. complex fd_set select:rfds;
  636. complex fd_set select:wfds;
  637. complex fd_set select:efds;
  638. complex timeval select:timeout;
  639. complex Fdinfo select:f;
  640. complex Muxbuf select:b;