ipi finily work , delay 15us.. need code clean
This commit is contained in:
@@ -1,12 +1,15 @@
|
||||
#include <stdio.h>
|
||||
// #include <libunwind.h>
|
||||
#include <unistd.h>
|
||||
#include <pthread.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
// void customFunction1(int n);
|
||||
void *customFunction1(void *n);
|
||||
void customFunction2(int n);
|
||||
void customFunction3(int n);
|
||||
// void *customFunction1(void *n);
|
||||
// void customFunction2(int n);
|
||||
// void customFunction3(int n);
|
||||
|
||||
// Call this function to get a backtrace.
|
||||
// void backtrace() {
|
||||
@@ -35,61 +38,79 @@ void customFunction3(int n);
|
||||
// }
|
||||
// }
|
||||
|
||||
void *customFunction1(void *n) {
|
||||
int num = *((int *)n);
|
||||
if(num <= 0) {
|
||||
printf("End of recursion\n");
|
||||
printf("pid: %d\n", getpid());
|
||||
while (1) {
|
||||
sleep(1);
|
||||
} // never return, keep stack
|
||||
// return NULL;
|
||||
} else {
|
||||
printf("Calling customFunction2\n");
|
||||
customFunction2(num-1);
|
||||
}
|
||||
return NULL;
|
||||
pid_t gettid() {
|
||||
return syscall(SYS_gettid);
|
||||
}
|
||||
|
||||
static void additionalFunction(int n) {
|
||||
printf("Additional function called with n = %d\n", n);
|
||||
}
|
||||
|
||||
static void customFunction3(int n) {
|
||||
printf("Calling customFunction3\n");
|
||||
additionalFunction(n);
|
||||
if (n <= 0) {
|
||||
printf("End of recursion\n");
|
||||
printf("pid: %d\n", getpid());
|
||||
while (1) {
|
||||
sleep(1);
|
||||
} // never return, keep stack
|
||||
// return NULL;
|
||||
}
|
||||
customFunction2(n - 1);
|
||||
}
|
||||
|
||||
void customFunction2(int n) {
|
||||
printf("Calling customFunction2\n");
|
||||
if(n <= 0) {
|
||||
printf("End of recursion\n");
|
||||
printf("pid: %d\n", getpid());
|
||||
while (1) {
|
||||
sleep(1);
|
||||
} // never return, keep stack
|
||||
// return NULL;
|
||||
}
|
||||
customFunction3(n-1);
|
||||
printf("Calling customFunction2\n");
|
||||
additionalFunction(n);
|
||||
if (n <= 0) {
|
||||
printf("End of recursion\n");
|
||||
printf("pid: %d\n", getpid());
|
||||
while (1) {
|
||||
sleep(1);
|
||||
} // never return, keep stack
|
||||
// return NULL;
|
||||
}
|
||||
customFunction3(n - 1);
|
||||
}
|
||||
|
||||
void customFunction3(int n) {
|
||||
printf("Calling customFunction3\n");
|
||||
if(n <= 0) {
|
||||
printf("End of recursion\n");
|
||||
printf("pid: %d\n", getpid());
|
||||
while (1) {
|
||||
sleep(1);
|
||||
} // never return, keep stack
|
||||
// return NULL;
|
||||
}
|
||||
customFunction2(n-1);
|
||||
void *customFunction1(void *n) {
|
||||
int num = *((int *)n);
|
||||
if (num <= 0) {
|
||||
printf("End of recursion\n");
|
||||
printf("pid: %d\n", getpid());
|
||||
while (1) {
|
||||
sleep(1);
|
||||
} // never return, keep stack
|
||||
// return NULL;
|
||||
} else {
|
||||
printf("Calling customFunction2\n");
|
||||
customFunction2(num - 1);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *customFunction122(void *n) {
|
||||
printf("tid: %d\n", gettid());
|
||||
while (1)
|
||||
{
|
||||
/* code */
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int num1 = 4;
|
||||
int num2 = 5;
|
||||
int num3 = 6;
|
||||
int num1 = 10;
|
||||
int num2 = 11;
|
||||
int num3 = 12;
|
||||
|
||||
pthread_t thread_id1, thread_id2, thread_id3;
|
||||
pthread_t thread_id1, thread_id2, thread_id3;
|
||||
|
||||
pthread_create(&thread_id1, NULL, customFunction1, &num1);
|
||||
pthread_create(&thread_id2, NULL, customFunction1, &num2);
|
||||
pthread_create(&thread_id3, NULL, customFunction1, &num3);
|
||||
pthread_create(&thread_id2, NULL, customFunction1, &num2);
|
||||
pthread_create(&thread_id3, NULL, customFunction1, &num3);
|
||||
pthread_create(&thread_id1, NULL, customFunction122, &num1);
|
||||
|
||||
pthread_join(thread_id1, NULL);
|
||||
pthread_join(thread_id2, NULL);
|
||||
pthread_join(thread_id3, NULL);
|
||||
return 0;
|
||||
pthread_join(thread_id1, NULL);
|
||||
pthread_join(thread_id2, NULL);
|
||||
pthread_join(thread_id3, NULL);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user