summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJennifer Averett <jennifer.averett@oarcorp.com>2012-10-05 09:34:09 -0500
committerJennifer Averett <jennifer.averett@oarcorp.com>2012-10-05 09:34:09 -0500
commit45a81cdc5e8c9ed35a8aa706e0ea360d357a574b (patch)
tree041e3fddefb475a9b960904afd966961fd41b2c7
parentport_before.h: Added an include of endian.h to resolve __htons calls. (diff)
downloadrtems-libbsd-45a81cdc5e8c9ed35a8aa706e0ea360d357a574b.tar.bz2
Added rtems specific version of _pthread_main_np()
This required adding rtems_id rtems_init_task_id to identify the main task.
-rw-r--r--freebsd-userspace/Makefile1
-rw-r--r--freebsd-userspace/rtems/rtems-uthread_main_np.c22
-rw-r--r--rtemsbsd/src/rtems-bsd-init.c2
3 files changed, 25 insertions, 0 deletions
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 <rtems.h>
+
+__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;