]> rtime.felk.cvut.cz Git - frescor/fosa.git/commitdiff
Some RTLinux bugs fixed. Work still to be done
authoriripoll <iripoll@35b4ef3e-fd22-0410-ab77-dab3279adceb>
Fri, 15 Jun 2007 11:44:43 +0000 (11:44 +0000)
committeriripoll <iripoll@35b4ef3e-fd22-0410-ab77-dab3279adceb>
Fri, 15 Jun 2007 11:44:43 +0000 (11:44 +0000)
git-svn-id: http://www.frescor.org/private/svn/frescor/fosa/trunk@494 35b4ef3e-fd22-0410-ab77-dab3279adceb

src_rtlinux/Makefile
src_rtlinux/fosa_threads_and_signals.c
src_rtlinux/test_fosa.c

index ba266eb75a45bde87c2f4e7fd375b211ff7174bd..c98f9e82cfaca59c0abb89d8ef3bc0278fbb91b8 100644 (file)
@@ -20,5 +20,7 @@ libfosa.a: $(OBJS)
 test_fosa_c.o: test_fosa.o
        ld -r -o test_fosa_c.o test_fosa.o libfosa.a
 
+test_fosa.o: test_fosa.c
+
 clean:
-       $(RM) -f *.o *~ *.a
\ No newline at end of file
+       $(RM) -f *.o *~ *.a
index dfbda5a11ee4201857a3e058781fea41ac30ac3b..adbe2fe0f8682a95f7bfe1070f9279b25bc3c7d5 100644 (file)
@@ -58,6 +58,7 @@
 //================================================
 
 #include <fosa.h>
+#include <asm/bitops.h>
 
 /*************************
  * Thread identification
@@ -80,6 +81,23 @@ int fosa_thread_create (frsh_thread_id_t *tid, const frsh_thread_attr_t *attr,
      return pthread_create(tid,attr,code, arg);
 }
 
+int fosa_key_create(int *key) {
+    int idx=ffs(pthread_self()->tsd_bitmap);
+
+    if (idx<0)
+       return -FOSA_EINVAL;
+
+    pthread_self()->tsd_bitmap&=~(1<<idx);
+
+    *key=idx;
+    return 0;
+}
+
+int fosa_key_destroy(int key) {
+    pthread_self()->tsd_bitmap|=(1<<key);
+    return 0;
+}
+
 
 /**************************************************
  * Thread-specific data
@@ -236,5 +254,19 @@ int fosa_signal_timedwait (frsh_signal_t set[], int size, frsh_signal_t *signal_
      return 0;
 }
 
+int frsh_thread_attr_init(frsh_thread_attr_t *attr) {
+    return pthread_attr_init(attr);
+}
 
+int frsh_thread_attr_destroy(frsh_thread_attr_t *attr) {
+    return pthread_attr_destroy(attr);
+}
 
+int frsh_thread_attr_set_stacksize(frsh_thread_attr_t *attr, 
+                                  size_t stacksize) {
+    return pthread_attr_setstacksize(attr, stacksize);
+}
+
+int frsh_thread_attr_get_stacksize (const frsh_thread_attr_t *attr, size_t *stacksize) {
+    return pthread_attr_getstacksize(attr, stacksize);
+}
index bceb466122bfa751b9811cbc515585ee74f53e9d..a457fe1e65f2ae1c5ee7d209f08ed940ca690dfd 100644 (file)
@@ -24,14 +24,14 @@ void * thread_code(void *arg) {
 // and that they return appropriate values
 /////////////////////////////////////////////////////////////
 
-int init_module(void) {
+void *main_app(void *args) {
   //////////////////////////////////
   //  Test clock functions
   //////////////////////////////////
 
   printf("--------------------------------------------------\n");
   printf("test get_time\n");
-
+  
   struct timespec current_time;
   int err;
   void * obtained;
@@ -121,7 +121,7 @@ int init_module(void) {
   printf("timeoutcode=%d signal received=%d value=%d\n",
         err,received,value_received.sival_int);
 
-
+  /*
   //////////////////////////////////
   //  Test timers and signals
   //////////////////////////////////
@@ -141,7 +141,7 @@ int init_module(void) {
   err=fosa_timer_create
     (FOSA_CLOCK_REALTIME, timer_sig, timer_info,&timerid);
   printf("timer created, err=%d\n",err);
-
+  
   err=fosa_timer_arm(timerid,false,&timerval);
   printf("timer armed for 1.3 secs, err=%d\n",err);
 
@@ -311,8 +311,18 @@ int init_module(void) {
   err=fosa_thread_attr_get_appscheduled(&th1_attr,&is_appsched);
   printf("thread attr get appsched=%d, err=%d\n",is_appsched,err);
 
-
+*/
 
   return 0;
 
 }
+
+static pthread_t main_thread;
+
+int init_module (void) {
+    return pthread_create(&main_thread, 0, main_app, 0);
+}
+
+void cleanup_module(void) {
+  pthread_delete_np(main_thread);
+}