void * foo(void * pArgs) { int thread_number = *(int*)pArgs; printf("number:%d\n",thread_number); printf("entered foo\n"); printf("number: %d\n",thread_number); while (true) { printf("entered while in foo\n"); int check = getbusy(thread_number); printf("after getbusy in while in foo\n"); printf("after while in while in foo\n"); printf("number: %d\n",thread_number); printf("########################check state is: %d\n",check); if (check == 1) { printf("number:%d\n",thread_number); printf("after printf args\n"); setbusy(thread_number); printf("after setbusy\n"); } if (check == 2) { printf("\n\nclose thread %d\n\n",thread_number); pthread_exit(0); } if (check == 0) { printf("idling\n"); sleep(1); } } return 0; }
void markbusy(daddr_t block, long count) { register int i; count = roundup(count, secsize) / secsize; for (i = 0; i < count; i++, block++) { if ((unsigned)block > part_len) { pwarn(gettext("Block %lx out of range\n"), block); break; } if (testbusy(block)) pwarn(gettext("Dup block %lx\n"), block); else { n_blks++; setbusy(block); } } }
int main(int argc, char * argv[]) { printf("entered main\n"); pthread_t threads[NUM_THREADS] = { 0 }; printf("after threads\n"); int pthreads[NUM_THREADS] = { 1,2,3 }; int creator; printf("after creator\n"); for (creator = 0;creator < NUM_THREADS;creator++) { printf("in for iteration:%d\n",creator+1); if(!pthread_create(&(threads[creator]),0,foo,(void*)(&(pthreads[creator])))) { perror("pthread_create"); } printf("after pthread_create\n"); } for (creator = 0;creator < NUM_THREADS;creator++) { printf("threads element #%d is %d\n",creator,(threads[creator])); } printf("after for\n"); setbusy(1); printf("after setbusy 1 0\n"); setbusy(2); printf("after setbusy 2 0\n"); setbusy(1); printf("after setbusy 1 1\n"); setbusy(2); printf("after setbusy 2 1\n"); setbusy(3); printf("after setbusy 3 0\n"); setbusy(1); printf("after setbusy 1 2\n"); setbusy(2); printf("after setbusy 2 2\n"); setbusy(3); printf("after setbusy 3 1\n"); printf("after exitProgram\n"); exitProgram(); //sleep(15); for (creator = 0;creator < NUM_THREADS;creator++) { pthread_join(threads[creator],0); } setbusy(2); printf("after setbusy 2 3\n"); setbusy(3); printf("after setbusy 3 2\n"); setbusy(1); printf("after setbusy 1 3\n"); printf("right before last thing in main\n"); return 0; }