From 45a81cdc5e8c9ed35a8aa706e0ea360d357a574b Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Fri, 5 Oct 2012 09:34:09 -0500 Subject: Added rtems specific version of _pthread_main_np() This required adding rtems_id rtems_init_task_id to identify the main task. --- freebsd-userspace/Makefile | 1 + freebsd-userspace/rtems/rtems-uthread_main_np.c | 22 ++++++++++++++++++++++ rtemsbsd/src/rtems-bsd-init.c | 2 ++ 3 files changed, 25 insertions(+) create mode 100644 freebsd-userspace/rtems/rtems-uthread_main_np.c diff --git a/freebsd-userspace/Makefile b/freebsd-userspace/Makefile index 5144c5cb..f9dc2c3a 100644 --- a/freebsd-userspace/Makefile +++ b/freebsd-userspace/Makefile @@ -130,6 +130,7 @@ C_FILES += lib/libc/db/mpool/mpool.c C_FILES += rtems/syslog.c C_FILES += rtems/rtems-syslog-initialize.c C_FILES += rtems/rtems-getprogname.c +C_FILES += rtems/rtems-uthread_main_np.c # ping command sources C_FILES += commands/sbin/ping/ping.c diff --git a/freebsd-userspace/rtems/rtems-uthread_main_np.c b/freebsd-userspace/rtems/rtems-uthread_main_np.c new file mode 100644 index 00000000..fa289007 --- /dev/null +++ b/freebsd-userspace/rtems/rtems-uthread_main_np.c @@ -0,0 +1,22 @@ +/* + * RTEMS version of + */ + +#include + +__weak_reference(_pthread_main_np, pthread_main_np); + +/* + * Provide the equivalent to Solaris thr_main() function + */ +int +_pthread_main_np() +{ + /* Created and set in rtems_bsd_initialize */ + extern rtems_id rtems_init_task_id; + + if ( rtems_init_task_id == rtems_task_self() ) + return 1; + else + return 0; +} diff --git a/rtemsbsd/src/rtems-bsd-init.c b/rtemsbsd/src/rtems-bsd-init.c index c8500df7..84dc8d8f 100644 --- a/rtemsbsd/src/rtems-bsd-init.c +++ b/rtemsbsd/src/rtems-bsd-init.c @@ -69,12 +69,14 @@ pcpu0_init() /* Initialize pcpu info of cpu-zero */ pcpu_init((char *)&FIXME_pcpu[0], 0, sizeof(struct pcpu)); } +rtems_id rtems_init_task_id; rtems_status_code rtems_bsd_initialize(void) { rtems_status_code sc = RTEMS_SUCCESSFUL; + rtems_init_task_id = rtems_task_self(); hz = (int) rtems_clock_get_ticks_per_second(); tick = 1000000 / hz; maxusers = 1; -- cgit v1.2.3