Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

#include #include #include #include jmp_buf trampoline, jb1, jb2; void thread1() { //while(1) { /* The following context-switches to the other thread. */ if (!setjmp(jb1)) {

#include

#include

#include

#include

jmp_buf trampoline, jb1, jb2;

void thread1()

{

//while(1) {

/* The following context-switches to the other thread. */

if (!setjmp(jb1)) {

printf("Step 8 ");

longjmp(jb2, 1);

/* NOTREACHED */

} else {

printf("Step 7 ");

}

// }

}

int thread2()

{

//while(1) {

/* The following context-switches to the other thread. */

if (!setjmp(jb2)) {

printf("Step 6 ");

longjmp(jb1, 1);

/* NOTREACHED */

} else {

printf("Step 9 ");

}

//}

}

void thread2_launchpad()

{

/* We create a new stack area for thread2 to run in by doing

* a dummy allocation of space (an array) on the stack.

* The reason for assigning 1 to the last element of the

* array is simply to avoid the compiler optimising away the

0 * array (as it would otherwise never be used).

*/

char space_for_thread[4096];

space_for_thread[4096-1] = 1;

printf("Step 5 ");

thread2();

}

int main(int argc, char* argv[])

{

printf("Step 1 ");

if (!setjmp(trampoline)) {

/* First return from trampoline - initialise. */

printf("Step 2 ");

if (!setjmp(jb1)) {

/* First return from setjmp snapshotting thread1 */

printf("Step 3 ");

/* Go to 2nd return of trampoline to create thread2 */

longjmp(trampoline, 1);

/* NOTREACHED */

} else {

/* We get here when we have been resumed

* by thread2 */

printf("Step 7 ");

thread1(); /* run thread1 */

}

} else {

/* Second return of trampoline caused by longjmp() above */

printf("Step 4 ");

thread2_launchpad(); /* launchpad for thread2 to

* run in distinct stack area */

}

}

Can you explain what this code does please?

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Introduction To Data Mining

Authors: Pang Ning Tan, Michael Steinbach, Vipin Kumar

1st Edition

321321367, 978-0321321367

More Books

Students also viewed these Databases questions

Question

Define a performance management system.

Answered: 1 week ago

Question

LO5 Illustrate the steps in developing a base pay system.

Answered: 1 week ago