[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 3/8] patches: Add patches for proper building of original library
Hi Costin, thanks for giving patch 0006 a more verbose description. Reviewed-by: Florian Schmidt <florian.schmidt@xxxxxxxxx> On 6/3/19 5:16 PM, Costin Lupu wrote: Current patches include bugfixes and refinements in the original code. Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> --- ...x-Set-type-size-of-result-used-in-pthread.patch | 494 +++++++++++++++++++++ ...x-Pass-right-arguments-on-tests-exit4-and.patch | 54 +++ ...x-Fix-macro-definitions-for-tests-once3-a.patch | 36 ++ ...le-priority-tests-until-we-add-preemptive.patch | 28 ++ patches/0005-Use-Unikraft-yield-function.patch | 22 + ...ader-inclusions-for-functions-from-header.patch | 40 ++ 6 files changed, 674 insertions(+) create mode 100644 patches/0001-tests-bugfix-Set-type-size-of-result-used-in-pthread.patch create mode 100644 patches/0002-tests-bugfix-Pass-right-arguments-on-tests-exit4-and.patch create mode 100644 patches/0003-tests-bugfix-Fix-macro-definitions-for-tests-once3-a.patch create mode 100644 patches/0004-tests-Disable-priority-tests-until-we-add-preemptive.patch create mode 100644 patches/0005-Use-Unikraft-yield-function.patch create mode 100644 patches/0006-Separate-header-inclusions-for-functions-from-header.patch diff --git a/patches/0001-tests-bugfix-Set-type-size-of-result-used-in-pthread.patch b/patches/0001-tests-bugfix-Set-type-size-of-result-used-in-pthread.patch new file mode 100644 index 0000000..8aa2cec --- /dev/null +++ b/patches/0001-tests-bugfix-Set-type-size-of-result-used-in-pthread.patch @@ -0,0 +1,494 @@ +From 919ebbd97b3992b5e66153b19982f28cb9bf734e Mon Sep 17 00:00:00 2001 +From: Costin Lupu <costin.lup@xxxxxxxxx> +Date: Sat, 9 Mar 2019 19:22:23 +0200 +Subject: [PATCH 1/5] tests bugfix Set type size of result used in pthread_join + calls to word size + + +diff --git a/tests/barrier3.c b/tests/barrier3.c +index 1f16a79..45fc1cf 100644 +--- a/tests/barrier3.c ++++ b/tests/barrier3.c +@@ -47,7 +47,7 @@ + #include "test.h" + + static pthread_barrier_t barrier = NULL; +-static int result = 1; ++static long result = 1; + + static void * func(void * arg) + { +diff --git a/tests/barrier5.c b/tests/barrier5.c +index 17e0fd5..4055c51 100644 +--- a/tests/barrier5.c ++++ b/tests/barrier5.c +@@ -94,8 +94,8 @@ func(void * barrierHeight) + int pthread_test_barrier5() + { + int i, j; +- int result; +- int serialThreadsTotal; ++ long result; ++ long serialThreadsTotal; + pthread_t t[NUMTHREADS + 1]; + + mx = PTHREAD_MUTEX_INITIALIZER; +diff --git a/tests/cancel2.c b/tests/cancel2.c +index 0c2b143..3635933 100644 +--- a/tests/cancel2.c ++++ b/tests/cancel2.c +@@ -215,7 +215,7 @@ int pthread_test_cancel2() + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + fail = (result != (int) PTHREAD_CANCELED); +diff --git a/tests/cancel3.c b/tests/cancel3.c +index c59ff58..f9f563b 100644 +--- a/tests/cancel3.c ++++ b/tests/cancel3.c +@@ -180,7 +180,7 @@ int pthread_test_cancel3() + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + /* + * The thread does not contain any cancelation points, so +diff --git a/tests/cancel4.c b/tests/cancel4.c +index cc0e5b1..3853cd8 100644 +--- a/tests/cancel4.c ++++ b/tests/cancel4.c +@@ -179,7 +179,7 @@ int pthread_test_cancel4() + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + /* + * The thread does not contain any cancelation points, so +diff --git a/tests/cancel5.c b/tests/cancel5.c +index 7ed0eb7..d50bf3f 100644 +--- a/tests/cancel5.c ++++ b/tests/cancel5.c +@@ -176,7 +176,7 @@ int pthread_test_cancel5() + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + /* + * The thread does not contain any cancelation points, so +diff --git a/tests/cancel6a.c b/tests/cancel6a.c +index 309c7a5..e6d44bf 100644 +--- a/tests/cancel6a.c ++++ b/tests/cancel6a.c +@@ -169,7 +169,7 @@ int pthread_test_cancel6a() + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + /* + * The thread does not contain any cancelation points, so +diff --git a/tests/cancel6d.c b/tests/cancel6d.c +index e448915..27f68f9 100644 +--- a/tests/cancel6d.c ++++ b/tests/cancel6d.c +@@ -171,7 +171,7 @@ int pthread_test_cancel6d() + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + +diff --git a/tests/cleanup0.c b/tests/cleanup0.c +index 069f98d..a641989 100644 +--- a/tests/cleanup0.c ++++ b/tests/cleanup0.c +@@ -191,7 +191,7 @@ int pthread_test_cleanup0() + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + +diff --git a/tests/cleanup1.c b/tests/cleanup1.c +index 8653fd4..68bc6ab 100644 +--- a/tests/cleanup1.c ++++ b/tests/cleanup1.c +@@ -206,7 +206,7 @@ int pthread_test_cleanup1() + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + +diff --git a/tests/cleanup2.c b/tests/cleanup2.c +index b4a2513..5df8346 100644 +--- a/tests/cleanup2.c ++++ b/tests/cleanup2.c +@@ -181,7 +181,7 @@ int pthread_test_cleanup2() + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + +diff --git a/tests/cleanup3.c b/tests/cleanup3.c +index 045b848..1b83d71 100644 +--- a/tests/cleanup3.c ++++ b/tests/cleanup3.c +@@ -192,7 +192,7 @@ int pthread_test_cleanup3() + for (i = 1; i <= NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + assert(pthread_join(t[i], (void **) &result) == 0); + +diff --git a/tests/condvar1_2.c b/tests/condvar1_2.c +index 670478d..26f63f7 100644 +--- a/tests/condvar1_2.c ++++ b/tests/condvar1_2.c +@@ -95,7 +95,7 @@ static pthread_cond_t cv[NUM_CV]; + int pthread_test_condvar1_2() + { + int i, j, k; +- int result = -1; ++ long result = -1; + pthread_t t; + + for (k = 0; k < NUM_LOOPS; k++) +diff --git a/tests/condvar2_1.c b/tests/condvar2_1.c +index 39f6787..003ae87 100644 +--- a/tests/condvar2_1.c ++++ b/tests/condvar2_1.c +@@ -114,7 +114,7 @@ int pthread_test_condvar2_1() + { + int i; + pthread_t t[NUMTHREADS + 1]; +- int result = 0; ++ long result = 0; + struct _timeb currSysTime; + const unsigned int NANOSEC_PER_MILLISEC = 1000000; + +diff --git a/tests/condvar3_1.c b/tests/condvar3_1.c +index 8725aec..aedcba9 100644 +--- a/tests/condvar3_1.c ++++ b/tests/condvar3_1.c +@@ -146,7 +146,7 @@ int pthread_test_condvar3_1() + { + int i; + pthread_t t[NUMTHREADS + 1]; +- int result = 0; ++ long result = 0; + + timedout = 0; + signaled = 0; +diff --git a/tests/condvar3_2.c b/tests/condvar3_2.c +index 91ade40..1fd181e 100644 +--- a/tests/condvar3_2.c ++++ b/tests/condvar3_2.c +@@ -140,7 +140,7 @@ int pthread_test_condvar3_2() + { + int i; + pthread_t t[NUMTHREADS + 1]; +- int result = 0; ++ long result = 0; + struct _timeb currSysTime; + const unsigned int NANOSEC_PER_MILLISEC = 1000000; + +diff --git a/tests/delay2.c b/tests/delay2.c +index 5eebb41..66edef7 100644 +--- a/tests/delay2.c ++++ b/tests/delay2.c +@@ -67,7 +67,7 @@ func(void * arg) + int pthread_test_delay2() + { + pthread_t t; +- int result = 0; ++ long result = 0; + + mx = PTHREAD_MUTEX_INITIALIZER; + +diff --git a/tests/exception1.c b/tests/exception1.c +index a73ccd4..409fd22 100644 +--- a/tests/exception1.c ++++ b/tests/exception1.c +@@ -186,7 +186,7 @@ pthread_test_exception1() + for (i = 0; i < NUMTHREADS; i++) + { + int fail = 0; +- int result = 0; ++ long result = 0; + + /* Canceled thread */ + assert(pthread_join(ct[i], (void **) &result) == 0); +diff --git a/tests/inherit1.c b/tests/inherit1.c +index d7c1000..2fbd25a 100644 +--- a/tests/inherit1.c ++++ b/tests/inherit1.c +@@ -100,7 +100,7 @@ int pthread_test_inherit1() + pthread_t t; + pthread_t mainThread = pthread_self(); + pthread_attr_t attr; +- int result = 0; ++ long result = 0; + struct sched_param param; + struct sched_param mainParam; + int prio; +diff --git a/tests/join0.c b/tests/join0.c +index 0a06337..b0c1aca 100644 +--- a/tests/join0.c ++++ b/tests/join0.c +@@ -61,7 +61,7 @@ func(void * arg) + int pthread_test_join0() + { + pthread_t id; +- int result; ++ long result; + + /* Create a single thread and wait for it to exit. */ + assert(pthread_create(&id, NULL, func, (void *) 123) == 0); +diff --git a/tests/join1.c b/tests/join1.c +index 4b55d6b..0dd9ad4 100644 +--- a/tests/join1.c ++++ b/tests/join1.c +@@ -61,7 +61,7 @@ int pthread_test_join1() + { + pthread_t id[4]; + int i; +- int result; ++ long result; + + /* Create a few threads and then exit. */ + for (i = 0; i < 4; i++) +diff --git a/tests/join2.c b/tests/join2.c +index a2e1dc3..63ff174 100644 +--- a/tests/join2.c ++++ b/tests/join2.c +@@ -55,7 +55,7 @@ int pthread_test_join2() + { + pthread_t id[4]; + int i; +- int result; ++ long result; + + /* Create a few threads and then exit. */ + for (i = 0; i < 4; i++) +diff --git a/tests/join3.c b/tests/join3.c +index 7f0d226..947aaff 100644 +--- a/tests/join3.c ++++ b/tests/join3.c +@@ -55,7 +55,7 @@ int pthread_test_join3() + { + pthread_t id[4]; + int i; +- int result; ++ long result; + + /* Create a few threads and then exit. */ + for (i = 0; i < 4; i++) +diff --git a/tests/mutex6e.c b/tests/mutex6e.c +index 5a74a5e..4bbbfd4 100644 +--- a/tests/mutex6e.c ++++ b/tests/mutex6e.c +@@ -83,7 +83,7 @@ int + pthread_test_mutex6e() + { + pthread_t t; +- int result = 0; ++ long result = 0; + int mxType = -1; + + lockCount = 0; +diff --git a/tests/mutex6es.c b/tests/mutex6es.c +index a4f98af..4a381e6 100644 +--- a/tests/mutex6es.c ++++ b/tests/mutex6es.c +@@ -82,7 +82,7 @@ int + pthread_test_mutex6es() + { + pthread_t t; +- int result = 0; ++ long result = 0; + + lockCount = 0; + +diff --git a/tests/mutex6r.c b/tests/mutex6r.c +index 9733471..2c7316e 100644 +--- a/tests/mutex6r.c ++++ b/tests/mutex6r.c +@@ -82,7 +82,7 @@ int + pthread_test_mutex6r() + { + pthread_t t; +- int result = 0; ++ long result = 0; + int mxType = -1; + + lockCount = 0; +diff --git a/tests/mutex6rs.c b/tests/mutex6rs.c +index 3b5639e..ad7f9a5 100644 +--- a/tests/mutex6rs.c ++++ b/tests/mutex6rs.c +@@ -81,7 +81,7 @@ int + pthread_test_mutex6rs() + { + pthread_t t; +- int result = 0; ++ long result = 0; + + lockCount = 0; + mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; +diff --git a/tests/mutex7e.c b/tests/mutex7e.c +index 572841e..1b36235 100644 +--- a/tests/mutex7e.c ++++ b/tests/mutex7e.c +@@ -83,7 +83,7 @@ int + pthread_test_mutex7e() + { + pthread_t t; +- int result = 0; ++ long result = 0; + int mxType = -1; + + lockCount = 0; +diff --git a/tests/mutex7r.c b/tests/mutex7r.c +index ab2a070..09e9701 100644 +--- a/tests/mutex7r.c ++++ b/tests/mutex7r.c +@@ -82,7 +82,7 @@ int + pthread_test_mutex7r() + { + pthread_t t; +- int result = 0; ++ long result = 0; + int mxType = -1; + + lockCount = 0; +diff --git a/tests/rwlock6.c b/tests/rwlock6.c +index 2ab1595..572c91a 100644 +--- a/tests/rwlock6.c ++++ b/tests/rwlock6.c +@@ -82,9 +82,9 @@ int pthread_test_rwlock6() + pthread_t wrt1; + pthread_t wrt2; + pthread_t rdt; +- int wr1Result = 0; +- int wr2Result = 0; +- int rdResult = 0; ++ long wr1Result = 0; ++ long wr2Result = 0; ++ long rdResult = 0; + + rwlock1 = PTHREAD_RWLOCK_INITIALIZER; + +diff --git a/tests/rwlock6_t.c b/tests/rwlock6_t.c +index cf92828..6b34dde 100644 +--- a/tests/rwlock6_t.c ++++ b/tests/rwlock6_t.c +@@ -102,10 +102,10 @@ int pthread_test_rwlock6t() + pthread_t wrt2; + pthread_t rdt1; + pthread_t rdt2; +- int wr1Result = 0; +- int wr2Result = 0; +- int rd1Result = 0; +- int rd2Result = 0; ++ long wr1Result = 0; ++ long wr2Result = 0; ++ long rd1Result = 0; ++ long rd2Result = 0; + + rwlock1 = PTHREAD_RWLOCK_INITIALIZER; + +diff --git a/tests/rwlock6_t2.c b/tests/rwlock6_t2.c +index 916c4c5..4f24d7d 100644 +--- a/tests/rwlock6_t2.c ++++ b/tests/rwlock6_t2.c +@@ -94,9 +94,9 @@ int pthread_test_rwlock6t2() + pthread_t wrt1; + pthread_t wrt2; + pthread_t rdt; +- int wr1Result = 0; +- int wr2Result = 0; +- int rdResult = 0; ++ long wr1Result = 0; ++ long wr2Result = 0; ++ long rdResult = 0; + struct _timeb currSysTime; + const long long NANOSEC_PER_MILLISEC = 1000000; + +diff --git a/tests/semaphore1.c b/tests/semaphore1.c +index 3dd85ee..5baa8a4 100644 +--- a/tests/semaphore1.c ++++ b/tests/semaphore1.c +@@ -111,7 +111,7 @@ int pthread_test_semaphore1(void) + { + pthread_t t; + sem_t s; +- int result; ++ long result; + + assert(pthread_create(&t, NULL, thr, NULL) == 0); + assert(pthread_join(t, (void **)&result) == 0); +diff --git a/tests/semaphore4.c b/tests/semaphore4.c +index 7530424..e1bc8f8 100644 +--- a/tests/semaphore4.c ++++ b/tests/semaphore4.c +@@ -134,7 +134,7 @@ int pthread_test_semaphore4(void) + + assert(pthread_cancel(t[5]) == 0); + { +- int result; ++ long result; + assert(pthread_join(t[5], (void **) &result) == 0); + } + assert(sem_getvalue(&s, &value) == 0); +diff --git a/tests/tsd1.c b/tests/tsd1.c +index 4c5308b..929c929 100644 +--- a/tests/tsd1.c ++++ b/tests/tsd1.c +@@ -197,7 +197,7 @@ int pthread_test_tsd1() + */ + for (i = 1; i < NUM_THREADS; i++) + { +- int result = 0; ++ long result = 0; + + assert(pthread_join(thread[i], (void **) &result) == 0); + } +diff --git a/tests/tsd2.c b/tests/tsd2.c +index a9558ab..d36df9f 100644 +--- a/tests/tsd2.c ++++ b/tests/tsd2.c +@@ -195,7 +195,7 @@ int pthread_test_tsd2() + */ + for (i = 1; i < NUM_THREADS; i++) + { +- int result = 0; ++ long result = 0; + + assert(pthread_join(thread[i], (void **) &result) == 0); + } +-- +2.11.0 + diff --git a/patches/0002-tests-bugfix-Pass-right-arguments-on-tests-exit4-and.patch b/patches/0002-tests-bugfix-Pass-right-arguments-on-tests-exit4-and.patch new file mode 100644 index 0000000..914d835 --- /dev/null +++ b/patches/0002-tests-bugfix-Pass-right-arguments-on-tests-exit4-and.patch @@ -0,0 +1,54 @@ +From 1bcadf3d3de5b2ef1417216e3ee56b7ec12eddec Mon Sep 17 00:00:00 2001 +From: Costin Lupu <costin.lup@xxxxxxxxx> +Date: Sat, 9 Mar 2019 19:27:16 +0200 +Subject: [PATCH 2/5] tests bugfix Pass right arguments on tests exit4 and + exit5 + + +diff --git a/tests/exit4.c b/tests/exit4.c +index 6d3e9ad..2645246 100644 +--- a/tests/exit4.c ++++ b/tests/exit4.c +@@ -105,7 +105,7 @@ static bag_t threadbag[NUMTHREADS + 1]; + static int osThread(void * arg) + { + int result = 1; +- bag_t * bag = *((bag_t **) arg); ++ bag_t * bag = arg; + + assert(bag == &threadbag[bag->threadnum]); + assert(bag->started == 0); +@@ -142,7 +142,7 @@ int pthread_test_exit4() + ptr = &(threadbag[i]); + + pte_osThreadCreate(osThread, 4096, 10, +- &ptr, ++ ptr, + &h[i]); + + pte_osThreadStart(h[i]); +diff --git a/tests/exit5.c b/tests/exit5.c +index 5e09c0f..bcad6e9 100644 +--- a/tests/exit5.c ++++ b/tests/exit5.c +@@ -103,7 +103,7 @@ static bag_t threadbag[NUMTHREADS + 1]; + static int osThread(void * arg) + { + int result = 1; +- bag_t * bag = *((bag_t **) arg); ++ bag_t * bag = arg; + + assert(bag == &threadbag[bag->threadnum]); + assert(bag->started == 0); +@@ -138,7 +138,7 @@ int pthread_test_exit5() + ptr = &(threadbag[i]); + + pte_osThreadCreate(osThread, 4096, 10, +- &ptr, ++ ptr, + &h[i]); + + pte_osThreadStart(h[i]); +-- +2.11.0 + diff --git a/patches/0003-tests-bugfix-Fix-macro-definitions-for-tests-once3-a.patch b/patches/0003-tests-bugfix-Fix-macro-definitions-for-tests-once3-a.patch new file mode 100644 index 0000000..c466e3a --- /dev/null +++ b/patches/0003-tests-bugfix-Fix-macro-definitions-for-tests-once3-a.patch @@ -0,0 +1,36 @@ +From 27575f2559b6a01501c40705026eca83aa511f31 Mon Sep 17 00:00:00 2001 +From: Costin Lupu <costin.lup@xxxxxxxxx> +Date: Sat, 9 Mar 2019 19:30:17 +0200 +Subject: [PATCH 3/5] tests bugfix Fix macro definitions for tests once3 and + once4 + + +diff --git a/tests/once3.c b/tests/once3.c +index 505374c..ac28e6d 100644 +--- a/tests/once3.c ++++ b/tests/once3.c +@@ -55,7 +55,7 @@ + + #include "test.h" + +-#define NUM_THREADS OS_MAX_SIMUL_THREADS / 5 /* Targeting each once control */ ++#define NUM_THREADS (OS_MAX_SIMUL_THREADS / 5) /* Targeting each once control */ + #define NUM_ONCE 5 + + +diff --git a/tests/once4.c b/tests/once4.c +index 027bdaa..da4a44c 100644 +--- a/tests/once4.c ++++ b/tests/once4.c +@@ -53,7 +53,7 @@ + + #include "test.h" + +-#define NUM_THREADS OS_MAX_SIMUL_THREADS / 5 /* Targeting each once control */ ++#define NUM_THREADS (OS_MAX_SIMUL_THREADS / 5) /* Targeting each once control */ + #define NUM_ONCE 5 + + static pthread_once_t o = PTHREAD_ONCE_INIT; +-- +2.11.0 + diff --git a/patches/0004-tests-Disable-priority-tests-until-we-add-preemptive.patch b/patches/0004-tests-Disable-priority-tests-until-we-add-preemptive.patch new file mode 100644 index 0000000..f0773d5 --- /dev/null +++ b/patches/0004-tests-Disable-priority-tests-until-we-add-preemptive.patch @@ -0,0 +1,28 @@ +From 36dec0d3b5e5ef279bdb30ee51b3e98cb21f5519 Mon Sep 17 00:00:00 2001 +From: Costin Lupu <costin.lup@xxxxxxxxx> +Date: Sat, 9 Mar 2019 19:32:58 +0200 +Subject: [PATCH 4/5] tests Disable priority tests until we add preemptive + scheduling + + +diff --git a/tests/test_main.c b/tests/test_main.c +index d4bea48..bd6498e 100644 +--- a/tests/test_main.c ++++ b/tests/test_main.c +@@ -109,11 +109,13 @@ static void runThreadTests(void) + pthread_test_reuse2(); + */ + ++#if 0 + printf("Priority test #1\n"); + pthread_test_priority1(); + + printf("Priority test #2\n"); + pthread_test_priority2(); ++#endif + + // printf("Inherit test #1\n"); + // pthread_test_inherit1(); ///@todo +-- +2.11.0 + diff --git a/patches/0005-Use-Unikraft-yield-function.patch b/patches/0005-Use-Unikraft-yield-function.patch new file mode 100644 index 0000000..0ec93b6 --- /dev/null +++ b/patches/0005-Use-Unikraft-yield-function.patch @@ -0,0 +1,22 @@ +From 52ccf3222da946d2ea11a4f3ecba8e31e7165562 Mon Sep 17 00:00:00 2001 +From: Costin Lupu <costin.lup@xxxxxxxxx> +Date: Sat, 9 Mar 2019 19:37:04 +0200 +Subject: [PATCH 5/5] Use Unikraft yield function + + +diff --git a/pte_generic_osal.h b/pte_generic_osal.h +index 4db1f52..de1ea5f 100644 +--- a/pte_generic_osal.h ++++ b/pte_generic_osal.h +@@ -241,7 +241,7 @@ static inline void pte_osYield(void) + */ + static inline void pte_osYield(void) + { +- pte_osThreadSleep(1); ++ uk_sched_yield(); + } + #endif + +-- +2.11.0 + diff --git a/patches/0006-Separate-header-inclusions-for-functions-from-header.patch b/patches/0006-Separate-header-inclusions-for-functions-from-header.patch new file mode 100644 index 0000000..36d66b0 --- /dev/null +++ b/patches/0006-Separate-header-inclusions-for-functions-from-header.patch @@ -0,0 +1,40 @@ +From 8ca957ddc2285469fdb4137a9b37ffd0cbc064ec Mon Sep 17 00:00:00 2001 +From: Costin Lupu <costin.lup@xxxxxxxxx> +Date: Mon, 11 Mar 2019 10:01:15 +0200 +Subject: [PATCH] Separate header inclusions for functions from header + inclusion for types + +Including time.h before defining pthread_t type generates "unknown type name +‘pthread_t’" compiling errors with Newlib because of some circular inclusions. +Thus we adopt a more generic approach, separating the inclusions needed for +defining types from the inclusions needed for declaring functions, moving the +latter just before declaring the function prototypes. + +diff --git a/pthread.h b/pthread.h +index 5b69053..33df446 100644 +--- a/pthread.h ++++ b/pthread.h +@@ -174,9 +174,6 @@ + * ------------------------------------------------------------- + */ + +-#include <time.h> +- +-#include <setjmp.h> + #include <limits.h> + + /* +@@ -653,6 +650,10 @@ enum + + #endif /* PTE_CLEANUP_C */ + ++#include <time.h> ++ ++#include <setjmp.h> ++ + /* + * =============== + * =============== +-- +2.11.0 + -- Dr. Florian Schmidt フローリアン・シュミット Research Scientist, Systems and Machine Learning Group NEC Laboratories Europe Kurfürsten-Anlage 36, D-69115 Heidelberg Tel. +49 (0)6221 4342-265 Fax: +49 (0)6221 4342-155 e-mail: florian.schmidt@xxxxxxxxx ============================================================ Registered at Amtsgericht Mannheim, Germany, HRB728558 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |