//added by Ying int sys_shmem_count(void) { int page_number; if (argint(0, &page_number) < 0) return -1; return shmem_count(page_number); }
int main(int argc, char *argv[]) { void *ptr; int n; int i; for (i = 0; i < 4; i++) { ptr = shmem_access(i); if (ptr == NULL) { test_failed(); } } int pid = fork(); if (pid < 0) { test_failed(); } else if (pid == 0) { for (i = 0; i < 4; i++) { n = shmem_count(i); if (n != 2) { test_failed(); } } exit(); } else { wait(); } test_passed(); exit(); }
int sys_shmem_count(void) { int page_num; // illegal page number if(argint(0, &page_num) < 0) return -1; // call shmem_count in proc.c return shmem_count(page_num); }
int main(int argc, char *argv[]) { char *ptr; int i; char d, arr[6] = "CS537"; int pid = fork(); if (pid < 0) { test_failed(); } else if (pid == 0) { // printf(1, "child shmem_counter before access: %d\n", shmem_count(3)); ptr = shmem_access(3); if (ptr == NULL) { test_failed(); } for (i = 0; i < 5; i++) { *(ptr+i) = arr[i]; printf(1, "write: %c\n", *(ptr+i)); } for (i = 0; i < 5; i++) { d = *(ptr+i); printf(1, "read in child: %c\n", d); } // printf(1, "child shmem_counter after access: %d\n", shmem_count(3)); exit(); } else { wait(); // printf(1, "parent shmem_counter before access: %d\n", shmem_count(3)); ptr = shmem_access(3); // printf(1, "parent shmem_counter after access: %d\n", shmem_count(3)); if (ptr == NULL) { test_failed(); } for (i = 0; i < 5; i++) { printf(1, "read in parent: %c\n", *(ptr+i)); if (*(ptr+i) != arr[i]) { printf(1, "%d\t%c\t%c\n", shmem_count(3), *(ptr+i), arr[i]); test_failed(); } } } test_passed(); exit(); }