teardowns.c 861 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "../config-host.h"
  2. /* SPDX-License-Identifier: MIT */
  3. #include <stdint.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <sys/types.h>
  8. #include <sys/wait.h>
  9. #include <unistd.h>
  10. #include <errno.h>
  11. #include "liburing.h"
  12. static void loop(void)
  13. {
  14. int i, ret = 0;
  15. for (i = 0; i < 100; i++) {
  16. struct io_uring ring;
  17. int fd;
  18. memset(&ring, 0, sizeof(ring));
  19. fd = io_uring_queue_init(0xa4, &ring, 0);
  20. if (fd >= 0) {
  21. close(fd);
  22. continue;
  23. }
  24. if (fd != -ENOMEM)
  25. ret++;
  26. }
  27. exit(ret);
  28. }
  29. int main(int argc, char *argv[])
  30. {
  31. int i, ret, status;
  32. if (argc > 1)
  33. return 0;
  34. for (i = 0; i < 12; i++) {
  35. if (!fork()) {
  36. loop();
  37. break;
  38. }
  39. }
  40. ret = 0;
  41. for (i = 0; i < 12; i++) {
  42. if (waitpid(-1, &status, 0) < 0) {
  43. perror("waitpid");
  44. return 1;
  45. }
  46. if (WEXITSTATUS(status))
  47. ret++;
  48. }
  49. return ret;
  50. }