mmap.c 721 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include <u.h>
  2. #include <libc.h>
  3. void
  4. main(int argc, char *argv[])
  5. {
  6. unsigned char *c = (void *)(512ULL * 1024 * 1024 * 1024);
  7. int pid;
  8. int p[2], mfd;
  9. char *name;
  10. static char data[128];
  11. int amt;
  12. if (pipe(p) < 0) {
  13. print("FAIL\n");
  14. exits("FAIL");
  15. }
  16. pid = fork();
  17. if (pid < 0) {
  18. print("FAIL\n");
  19. exits("FAIL");
  20. }
  21. if (pid == 0) {
  22. char w[1];
  23. read(p[0], w, 1);
  24. //*c = 0;
  25. print("PASS\n");
  26. exits("PASS");
  27. }
  28. name = smprint("/proc/%d/mmap", pid);
  29. mfd = open(name, ORDWR);
  30. amt = write(p[0], "R", sizeof("R"));
  31. if (amt < 0) {
  32. print("FAIL\n");
  33. exits("FAIL");
  34. }
  35. amt = read(mfd, data, sizeof(data));
  36. if (amt < 0) {
  37. print("FAIL\n");
  38. exits("FAIL");
  39. }
  40. print("PASS\n");
  41. exits("PASS");
  42. }