calls.c 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873
  1. /* Automatically generated file; do not edit */
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #include <assert.h>
  5. #include <unistd.h>
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <errno.h>
  9. #include <err.h>
  10. #include "extern.h"
  11. typedef void (*tryfunc)(int dofork);
  12. static
  13. void
  14. try_execv(int dofork)
  15. {
  16. void * a0 = randptr();
  17. void * a1 = randptr();
  18. int result, pid, status;
  19. char buf[128];
  20. snprintf(buf, sizeof(buf), "execv(%p, %p)",
  21. (a0), (a1));
  22. printf("%-47s", buf);
  23. pid = dofork ? fork() : 0;
  24. if (pid<0) {
  25. err(1, "fork");
  26. }
  27. if (pid>0) {
  28. waitpid(pid, &status, 0);
  29. return;
  30. }
  31. result = execv(a0, a1);
  32. printf(" result %d, errno %d\n", result, errno);
  33. if (dofork) {
  34. exit(0);
  35. }
  36. }
  37. static
  38. void
  39. try_waitpid(int dofork)
  40. {
  41. int a0 = randint();
  42. void * a1 = randptr();
  43. int a2 = randint();
  44. int result, pid, status;
  45. char buf[128];
  46. snprintf(buf, sizeof(buf), "waitpid(%d, %p, %d)",
  47. (a0), (a1), (a2));
  48. printf("%-47s", buf);
  49. pid = dofork ? fork() : 0;
  50. if (pid<0) {
  51. err(1, "fork");
  52. }
  53. if (pid>0) {
  54. waitpid(pid, &status, 0);
  55. return;
  56. }
  57. result = waitpid(a0, a1, a2);
  58. printf(" result %d, errno %d\n", result, errno);
  59. if (dofork) {
  60. exit(0);
  61. }
  62. }
  63. static
  64. void
  65. try_open(int dofork)
  66. {
  67. void * a0 = randptr();
  68. int a1 = randint();
  69. int a2 = randint();
  70. int result, pid, status;
  71. char buf[128];
  72. snprintf(buf, sizeof(buf), "open(%p, %d, %d)",
  73. (a0), (a1), (a2));
  74. printf("%-47s", buf);
  75. pid = dofork ? fork() : 0;
  76. if (pid<0) {
  77. err(1, "fork");
  78. }
  79. if (pid>0) {
  80. waitpid(pid, &status, 0);
  81. return;
  82. }
  83. result = open(a0, a1, a2);
  84. printf(" result %d, errno %d\n", result, errno);
  85. if (dofork) {
  86. exit(0);
  87. }
  88. }
  89. static
  90. void
  91. try_read(int dofork)
  92. {
  93. int a0 = randint();
  94. void * a1 = randptr();
  95. size_t a2 = randsize();
  96. int result, pid, status;
  97. char buf[128];
  98. snprintf(buf, sizeof(buf), "read(%d, %p, %lu)",
  99. (a0), (a1), (unsigned long)(a2));
  100. printf("%-47s", buf);
  101. pid = dofork ? fork() : 0;
  102. if (pid<0) {
  103. err(1, "fork");
  104. }
  105. if (pid>0) {
  106. waitpid(pid, &status, 0);
  107. return;
  108. }
  109. result = read(a0, a1, a2);
  110. printf(" result %d, errno %d\n", result, errno);
  111. if (dofork) {
  112. exit(0);
  113. }
  114. }
  115. static
  116. void
  117. try_write(int dofork)
  118. {
  119. int a0 = randint();
  120. void * a1 = randptr();
  121. size_t a2 = randsize();
  122. int result, pid, status;
  123. char buf[128];
  124. snprintf(buf, sizeof(buf), "write(%d, %p, %lu)",
  125. (a0), (a1), (unsigned long)(a2));
  126. printf("%-47s", buf);
  127. pid = dofork ? fork() : 0;
  128. if (pid<0) {
  129. err(1, "fork");
  130. }
  131. if (pid>0) {
  132. waitpid(pid, &status, 0);
  133. return;
  134. }
  135. result = write(a0, a1, a2);
  136. printf(" result %d, errno %d\n", result, errno);
  137. if (dofork) {
  138. exit(0);
  139. }
  140. }
  141. static
  142. void
  143. try_close(int dofork)
  144. {
  145. int a0 = randint();
  146. int result, pid, status;
  147. char buf[128];
  148. snprintf(buf, sizeof(buf), "close(%d)",
  149. (a0));
  150. printf("%-47s", buf);
  151. pid = dofork ? fork() : 0;
  152. if (pid<0) {
  153. err(1, "fork");
  154. }
  155. if (pid>0) {
  156. waitpid(pid, &status, 0);
  157. return;
  158. }
  159. result = close(a0);
  160. printf(" result %d, errno %d\n", result, errno);
  161. if (dofork) {
  162. exit(0);
  163. }
  164. }
  165. static
  166. void
  167. try_ioctl(int dofork)
  168. {
  169. int a0 = randint();
  170. int a1 = randint();
  171. void * a2 = randptr();
  172. int result, pid, status;
  173. char buf[128];
  174. snprintf(buf, sizeof(buf), "ioctl(%d, %d, %p)",
  175. (a0), (a1), (a2));
  176. printf("%-47s", buf);
  177. pid = dofork ? fork() : 0;
  178. if (pid<0) {
  179. err(1, "fork");
  180. }
  181. if (pid>0) {
  182. waitpid(pid, &status, 0);
  183. return;
  184. }
  185. result = ioctl(a0, a1, a2);
  186. printf(" result %d, errno %d\n", result, errno);
  187. if (dofork) {
  188. exit(0);
  189. }
  190. }
  191. static
  192. void
  193. try_lseek(int dofork)
  194. {
  195. int a0 = randint();
  196. off_t a1 = randoff();
  197. int a2 = randint();
  198. int result, pid, status;
  199. char buf[128];
  200. snprintf(buf, sizeof(buf), "lseek(%d, %ld, %d)",
  201. (a0), (long)(a1), (a2));
  202. printf("%-47s", buf);
  203. pid = dofork ? fork() : 0;
  204. if (pid<0) {
  205. err(1, "fork");
  206. }
  207. if (pid>0) {
  208. waitpid(pid, &status, 0);
  209. return;
  210. }
  211. result = lseek(a0, a1, a2);
  212. printf(" result %d, errno %d\n", result, errno);
  213. if (dofork) {
  214. exit(0);
  215. }
  216. }
  217. static
  218. void
  219. try_fsync(int dofork)
  220. {
  221. int a0 = randint();
  222. int result, pid, status;
  223. char buf[128];
  224. snprintf(buf, sizeof(buf), "fsync(%d)",
  225. (a0));
  226. printf("%-47s", buf);
  227. pid = dofork ? fork() : 0;
  228. if (pid<0) {
  229. err(1, "fork");
  230. }
  231. if (pid>0) {
  232. waitpid(pid, &status, 0);
  233. return;
  234. }
  235. result = fsync(a0);
  236. printf(" result %d, errno %d\n", result, errno);
  237. if (dofork) {
  238. exit(0);
  239. }
  240. }
  241. static
  242. void
  243. try_ftruncate(int dofork)
  244. {
  245. int a0 = randint();
  246. off_t a1 = randoff();
  247. int result, pid, status;
  248. char buf[128];
  249. snprintf(buf, sizeof(buf), "ftruncate(%d, %ld)",
  250. (a0), (long)(a1));
  251. printf("%-47s", buf);
  252. pid = dofork ? fork() : 0;
  253. if (pid<0) {
  254. err(1, "fork");
  255. }
  256. if (pid>0) {
  257. waitpid(pid, &status, 0);
  258. return;
  259. }
  260. result = ftruncate(a0, a1);
  261. printf(" result %d, errno %d\n", result, errno);
  262. if (dofork) {
  263. exit(0);
  264. }
  265. }
  266. static
  267. void
  268. try_fstat(int dofork)
  269. {
  270. int a0 = randint();
  271. void * a1 = randptr();
  272. int result, pid, status;
  273. char buf[128];
  274. snprintf(buf, sizeof(buf), "fstat(%d, %p)",
  275. (a0), (a1));
  276. printf("%-47s", buf);
  277. pid = dofork ? fork() : 0;
  278. if (pid<0) {
  279. err(1, "fork");
  280. }
  281. if (pid>0) {
  282. waitpid(pid, &status, 0);
  283. return;
  284. }
  285. result = fstat(a0, a1);
  286. printf(" result %d, errno %d\n", result, errno);
  287. if (dofork) {
  288. exit(0);
  289. }
  290. }
  291. static
  292. void
  293. try_remove(int dofork)
  294. {
  295. void * a0 = randptr();
  296. int result, pid, status;
  297. char buf[128];
  298. snprintf(buf, sizeof(buf), "remove(%p)",
  299. (a0));
  300. printf("%-47s", buf);
  301. pid = dofork ? fork() : 0;
  302. if (pid<0) {
  303. err(1, "fork");
  304. }
  305. if (pid>0) {
  306. waitpid(pid, &status, 0);
  307. return;
  308. }
  309. result = remove(a0);
  310. printf(" result %d, errno %d\n", result, errno);
  311. if (dofork) {
  312. exit(0);
  313. }
  314. }
  315. static
  316. void
  317. try_rename(int dofork)
  318. {
  319. void * a0 = randptr();
  320. void * a1 = randptr();
  321. int result, pid, status;
  322. char buf[128];
  323. snprintf(buf, sizeof(buf), "rename(%p, %p)",
  324. (a0), (a1));
  325. printf("%-47s", buf);
  326. pid = dofork ? fork() : 0;
  327. if (pid<0) {
  328. err(1, "fork");
  329. }
  330. if (pid>0) {
  331. waitpid(pid, &status, 0);
  332. return;
  333. }
  334. result = rename(a0, a1);
  335. printf(" result %d, errno %d\n", result, errno);
  336. if (dofork) {
  337. exit(0);
  338. }
  339. }
  340. static
  341. void
  342. try_link(int dofork)
  343. {
  344. void * a0 = randptr();
  345. void * a1 = randptr();
  346. int result, pid, status;
  347. char buf[128];
  348. snprintf(buf, sizeof(buf), "link(%p, %p)",
  349. (a0), (a1));
  350. printf("%-47s", buf);
  351. pid = dofork ? fork() : 0;
  352. if (pid<0) {
  353. err(1, "fork");
  354. }
  355. if (pid>0) {
  356. waitpid(pid, &status, 0);
  357. return;
  358. }
  359. result = link(a0, a1);
  360. printf(" result %d, errno %d\n", result, errno);
  361. if (dofork) {
  362. exit(0);
  363. }
  364. }
  365. static
  366. void
  367. try_mkdir(int dofork)
  368. {
  369. void * a0 = randptr();
  370. int a1 = randint();
  371. int result, pid, status;
  372. char buf[128];
  373. snprintf(buf, sizeof(buf), "mkdir(%p, %d)",
  374. (a0), (a1));
  375. printf("%-47s", buf);
  376. pid = dofork ? fork() : 0;
  377. if (pid<0) {
  378. err(1, "fork");
  379. }
  380. if (pid>0) {
  381. waitpid(pid, &status, 0);
  382. return;
  383. }
  384. result = mkdir(a0, a1);
  385. printf(" result %d, errno %d\n", result, errno);
  386. if (dofork) {
  387. exit(0);
  388. }
  389. }
  390. static
  391. void
  392. try_rmdir(int dofork)
  393. {
  394. void * a0 = randptr();
  395. int result, pid, status;
  396. char buf[128];
  397. snprintf(buf, sizeof(buf), "rmdir(%p)",
  398. (a0));
  399. printf("%-47s", buf);
  400. pid = dofork ? fork() : 0;
  401. if (pid<0) {
  402. err(1, "fork");
  403. }
  404. if (pid>0) {
  405. waitpid(pid, &status, 0);
  406. return;
  407. }
  408. result = rmdir(a0);
  409. printf(" result %d, errno %d\n", result, errno);
  410. if (dofork) {
  411. exit(0);
  412. }
  413. }
  414. static
  415. void
  416. try_chdir(int dofork)
  417. {
  418. void * a0 = randptr();
  419. int result, pid, status;
  420. char buf[128];
  421. snprintf(buf, sizeof(buf), "chdir(%p)",
  422. (a0));
  423. printf("%-47s", buf);
  424. pid = dofork ? fork() : 0;
  425. if (pid<0) {
  426. err(1, "fork");
  427. }
  428. if (pid>0) {
  429. waitpid(pid, &status, 0);
  430. return;
  431. }
  432. result = chdir(a0);
  433. printf(" result %d, errno %d\n", result, errno);
  434. if (dofork) {
  435. exit(0);
  436. }
  437. }
  438. static
  439. void
  440. try_getdirentry(int dofork)
  441. {
  442. int a0 = randint();
  443. void * a1 = randptr();
  444. size_t a2 = randsize();
  445. int result, pid, status;
  446. char buf[128];
  447. snprintf(buf, sizeof(buf), "getdirentry(%d, %p, %lu)",
  448. (a0), (a1), (unsigned long)(a2));
  449. printf("%-47s", buf);
  450. pid = dofork ? fork() : 0;
  451. if (pid<0) {
  452. err(1, "fork");
  453. }
  454. if (pid>0) {
  455. waitpid(pid, &status, 0);
  456. return;
  457. }
  458. result = getdirentry(a0, a1, a2);
  459. printf(" result %d, errno %d\n", result, errno);
  460. if (dofork) {
  461. exit(0);
  462. }
  463. }
  464. static
  465. void
  466. try_symlink(int dofork)
  467. {
  468. void * a0 = randptr();
  469. void * a1 = randptr();
  470. int result, pid, status;
  471. char buf[128];
  472. snprintf(buf, sizeof(buf), "symlink(%p, %p)",
  473. (a0), (a1));
  474. printf("%-47s", buf);
  475. pid = dofork ? fork() : 0;
  476. if (pid<0) {
  477. err(1, "fork");
  478. }
  479. if (pid>0) {
  480. waitpid(pid, &status, 0);
  481. return;
  482. }
  483. result = symlink(a0, a1);
  484. printf(" result %d, errno %d\n", result, errno);
  485. if (dofork) {
  486. exit(0);
  487. }
  488. }
  489. static
  490. void
  491. try_readlink(int dofork)
  492. {
  493. void * a0 = randptr();
  494. void * a1 = randptr();
  495. size_t a2 = randsize();
  496. int result, pid, status;
  497. char buf[128];
  498. snprintf(buf, sizeof(buf), "readlink(%p, %p, %lu)",
  499. (a0), (a1), (unsigned long)(a2));
  500. printf("%-47s", buf);
  501. pid = dofork ? fork() : 0;
  502. if (pid<0) {
  503. err(1, "fork");
  504. }
  505. if (pid>0) {
  506. waitpid(pid, &status, 0);
  507. return;
  508. }
  509. result = readlink(a0, a1, a2);
  510. printf(" result %d, errno %d\n", result, errno);
  511. if (dofork) {
  512. exit(0);
  513. }
  514. }
  515. static
  516. void
  517. try_dup2(int dofork)
  518. {
  519. int a0 = randint();
  520. int a1 = randint();
  521. int result, pid, status;
  522. char buf[128];
  523. snprintf(buf, sizeof(buf), "dup2(%d, %d)",
  524. (a0), (a1));
  525. printf("%-47s", buf);
  526. pid = dofork ? fork() : 0;
  527. if (pid<0) {
  528. err(1, "fork");
  529. }
  530. if (pid>0) {
  531. waitpid(pid, &status, 0);
  532. return;
  533. }
  534. result = dup2(a0, a1);
  535. printf(" result %d, errno %d\n", result, errno);
  536. if (dofork) {
  537. exit(0);
  538. }
  539. }
  540. static
  541. void
  542. try_pipe(int dofork)
  543. {
  544. void * a0 = randptr();
  545. int result, pid, status;
  546. char buf[128];
  547. snprintf(buf, sizeof(buf), "pipe(%p)",
  548. (a0));
  549. printf("%-47s", buf);
  550. pid = dofork ? fork() : 0;
  551. if (pid<0) {
  552. err(1, "fork");
  553. }
  554. if (pid>0) {
  555. waitpid(pid, &status, 0);
  556. return;
  557. }
  558. result = pipe(a0);
  559. printf(" result %d, errno %d\n", result, errno);
  560. if (dofork) {
  561. exit(0);
  562. }
  563. }
  564. static
  565. void
  566. try___time(int dofork)
  567. {
  568. void * a0 = randptr();
  569. void * a1 = randptr();
  570. int result, pid, status;
  571. char buf[128];
  572. snprintf(buf, sizeof(buf), "__time(%p, %p)",
  573. (a0), (a1));
  574. printf("%-47s", buf);
  575. pid = dofork ? fork() : 0;
  576. if (pid<0) {
  577. err(1, "fork");
  578. }
  579. if (pid>0) {
  580. waitpid(pid, &status, 0);
  581. return;
  582. }
  583. result = __time(a0, a1);
  584. printf(" result %d, errno %d\n", result, errno);
  585. if (dofork) {
  586. exit(0);
  587. }
  588. }
  589. static
  590. void
  591. try___getcwd(int dofork)
  592. {
  593. void * a0 = randptr();
  594. size_t a1 = randsize();
  595. int result, pid, status;
  596. char buf[128];
  597. snprintf(buf, sizeof(buf), "__getcwd(%p, %lu)",
  598. (a0), (unsigned long)(a1));
  599. printf("%-47s", buf);
  600. pid = dofork ? fork() : 0;
  601. if (pid<0) {
  602. err(1, "fork");
  603. }
  604. if (pid>0) {
  605. waitpid(pid, &status, 0);
  606. return;
  607. }
  608. result = __getcwd(a0, a1);
  609. printf(" result %d, errno %d\n", result, errno);
  610. if (dofork) {
  611. exit(0);
  612. }
  613. }
  614. static
  615. void
  616. try_stat(int dofork)
  617. {
  618. void * a0 = randptr();
  619. void * a1 = randptr();
  620. int result, pid, status;
  621. char buf[128];
  622. snprintf(buf, sizeof(buf), "stat(%p, %p)",
  623. (a0), (a1));
  624. printf("%-47s", buf);
  625. pid = dofork ? fork() : 0;
  626. if (pid<0) {
  627. err(1, "fork");
  628. }
  629. if (pid>0) {
  630. waitpid(pid, &status, 0);
  631. return;
  632. }
  633. result = stat(a0, a1);
  634. printf(" result %d, errno %d\n", result, errno);
  635. if (dofork) {
  636. exit(0);
  637. }
  638. }
  639. static
  640. void
  641. try_lstat(int dofork)
  642. {
  643. void * a0 = randptr();
  644. void * a1 = randptr();
  645. int result, pid, status;
  646. char buf[128];
  647. snprintf(buf, sizeof(buf), "lstat(%p, %p)",
  648. (a0), (a1));
  649. printf("%-47s", buf);
  650. pid = dofork ? fork() : 0;
  651. if (pid<0) {
  652. err(1, "fork");
  653. }
  654. if (pid>0) {
  655. waitpid(pid, &status, 0);
  656. return;
  657. }
  658. result = lstat(a0, a1);
  659. printf(" result %d, errno %d\n", result, errno);
  660. if (dofork) {
  661. exit(0);
  662. }
  663. }
  664. static tryfunc funcs2[] = {
  665. try_execv,
  666. try_waitpid,
  667. try_open,
  668. try_read,
  669. try_write,
  670. try_close,
  671. try_lseek,
  672. try_chdir,
  673. try_dup2,
  674. try___getcwd,
  675. NULL
  676. };
  677. static tryfunc funcs3[] = {
  678. try_execv,
  679. try_waitpid,
  680. try_open,
  681. try_read,
  682. try_write,
  683. try_close,
  684. try_lseek,
  685. try_chdir,
  686. try_dup2,
  687. try___getcwd,
  688. NULL
  689. };
  690. static tryfunc funcs4[] = {
  691. try_execv,
  692. try_waitpid,
  693. try_open,
  694. try_read,
  695. try_write,
  696. try_close,
  697. try_lseek,
  698. try_fsync,
  699. try_ftruncate,
  700. try_fstat,
  701. try_remove,
  702. try_rename,
  703. try_mkdir,
  704. try_rmdir,
  705. try_chdir,
  706. try_getdirentry,
  707. try_dup2,
  708. try___getcwd,
  709. NULL
  710. };
  711. static tryfunc funcs5[] = {
  712. try_execv,
  713. try_waitpid,
  714. try_open,
  715. try_read,
  716. try_write,
  717. try_close,
  718. try_ioctl,
  719. try_lseek,
  720. try_fsync,
  721. try_ftruncate,
  722. try_fstat,
  723. try_remove,
  724. try_rename,
  725. try_link,
  726. try_mkdir,
  727. try_rmdir,
  728. try_chdir,
  729. try_getdirentry,
  730. try_symlink,
  731. try_readlink,
  732. try_dup2,
  733. try_pipe,
  734. try___time,
  735. try___getcwd,
  736. try_stat,
  737. try_lstat,
  738. NULL
  739. };
  740. static tryfunc *tables[4] = {
  741. funcs2,
  742. funcs3,
  743. funcs4,
  744. funcs5,
  745. };
  746. void
  747. trycalls(int asst, int dofork, int count)
  748. {
  749. tryfunc *list;
  750. int i, j;
  751. assert(asst>=2 && asst<=5);
  752. list = tables[asst-2];
  753. for (i=0; i<count; i++) {
  754. for (j=0; list[j]; j++) {
  755. (*list[j])(dofork);
  756. }
  757. }
  758. }