Advertisement
Guest User

Untitled

a guest
Jun 3rd, 2015
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. #include "types.h"
  2. #include "user.h"
  3. #define PGSIZE 4096
  4.  
  5. #define ASSERT(cond, ...) \
  6. if(!cond){ \
  7. printf(1, "failed!!!! %s:%d - ", __FUNCTION__, __LINE__); \
  8. printf(1, "\n"); \
  9. exit(); \
  10. }
  11.  
  12.  
  13. int pgdir_testing() {
  14. malloc(10 * 1024 * PGSIZE);
  15. return -1;
  16. }
  17.  
  18. int fork_test() {
  19. #define SOME_SIZE 5
  20. int proccssss = 10;
  21. int i = 0;
  22. int j = 0;
  23. int pid;
  24. printf(1, "calling malloc\n");
  25. int * arr = malloc(4 * SOME_SIZE);
  26. for (i = 0; i < SOME_SIZE; i++) {
  27. arr[i] = i;
  28. }
  29.  
  30. for (i = 0; i < proccssss; i++) {
  31. printf(1, "forking: %d\n", i);
  32. if ((pid = fork()) == 0) {
  33. for (j = 0; j < SOME_SIZE; j++) {
  34. ASSERT(arr[j] == j);
  35. }
  36. exit();
  37. } else {
  38. ASSERT(wait() == pid);
  39. }
  40. }
  41. return 0;
  42. }
  43.  
  44.  
  45. int test_malloc() {
  46. malloc(100 * PGSIZE);
  47. return 0;
  48. }
  49.  
  50. void fib(int n) {
  51. int i = 1;
  52. printf(1, "%d\n", n);
  53. i++;
  54. fib(n + 1);
  55. }
  56.  
  57. int do_stackoverflow() {
  58. int pid;
  59. if ((pid = fork()) == 0) {
  60. fib(0);
  61. } else {
  62. ASSERT(wait() == pid);
  63. }
  64. return 0;
  65. }
  66.  
  67. int try_crash_malloc() {
  68. unsigned int ty = 1024 * 1024 * 1024;
  69. ASSERT(malloc(ty) != 0);
  70. ASSERT(malloc(ty + 100) == 0);
  71.  
  72. return 0;
  73. }
  74.  
  75. int
  76. main(int argc, char *argv[]) {
  77. test_malloc();
  78. pgdir_testing();
  79. fork_test();
  80. do_stackoverflow();
  81. try_crash_malloc();
  82. exit();
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement