[rtems-libbsd commit] Added rtems specific version of _pthread_main_np()

Jennifer Averett jennifer at rtems.org
Fri Oct 5 14:31:22 UTC 2012


Module:    rtems-libbsd
Branch:    master
Commit:    45a81cdc5e8c9ed35a8aa706e0ea360d357a574b
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=45a81cdc5e8c9ed35a8aa706e0ea360d357a574b

Author:    Jennifer Averett <jennifer.averett at oarcorp.com>
Date:      Fri Oct  5 09:34:09 2012 -0500

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(+), 0 deletions(-)

diff --git a/freebsd-userspace/Makefile b/freebsd-userspace/Makefile
index 5144c5c..f9dc2c3 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 0000000..fa28900
--- /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 c8500df..84dc8d8 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;




More information about the vc mailing list