/* +-------------+---------+-----------------------+ | John Breaux | jab0910 | JohnBreaux@my.unt.edu | +-------------+---------+-----------------------+ | 2022-04-04 | +-----------------------------------------------+ */ #include // POSIX semaphores! #include "list.hpp" // list implementation #include "globals.hpp" // lists, sems, muts #include "transformer.hpp" void transform(block *x, block *y); void *transformer (void *) { block *x, *y; while (true) { // wait for element on list1 wait(sem_list1); // mutual exclusion for list1 wait(mut_list1); //* x:=unlink(list1); x = unlink(list1); // mutual exclusion for list1 signal(mut_list1); // wait for element on freelist wait(sem_freelist); // mutual exclusion for freelist wait(mut_freelist); //* y:=unlink(freelist); y = unlink(freelist); // mutual exclusion for freelist signal(mut_freelist); //* use_block_x_to_produce_info_in_y(x,y) transform(x, y); // mutual exclusion for freelist wait(mut_freelist); //* link(x, freelist); link(x, freelist); // mutual exclusion for freelist signal(mut_freelist); // freelist++ signal(sem_freelist); // mutual exclusion for list2 wait(mut_list2); //* link(y, list2); link(y, list2); // mutual exclusion for list2 signal(mut_list2); // signal new element on list2 signal(sem_list2); } return nullptr; } void transform(block *x, block *y) { return; }