Add a few more pthread compilant definitions
[akaros.git] / user / pthread / pthread.h
index 8a8cdcd..0f14fb2 100644 (file)
@@ -39,7 +39,9 @@ struct pthread_tcb {
        void *(*start_routine)(void*);
        void *arg;
        void *retval;
-       uint64_t sigmask;
+       sigset_t sigmask;
+       sigset_t sigpending;
+       struct sigdata *sigdata;
 };
 typedef struct pthread_tcb* pthread_t;
 TAILQ_HEAD(pthread_queue, pthread_tcb);
@@ -122,6 +124,7 @@ typedef struct
 
 typedef struct 
 {
+       void *stackaddr;
        size_t stacksize;
        int detachstate;
 } pthread_attr_t;
@@ -131,12 +134,15 @@ typedef dtls_key_t pthread_key_t;
 
 /* Akaros pthread extensions / hacks */
 void pthread_can_vcore_request(bool can);      /* default is TRUE */
+void pthread_need_tls(bool need);                      /* default is TRUE */
 void pthread_lib_init(void);
 void __pthread_generic_yield(struct pthread_tcb *pthread);
 
 /* The pthreads API */
 int pthread_attr_init(pthread_attr_t *);
 int pthread_attr_destroy(pthread_attr_t *);
+int __pthread_create(pthread_t *, const pthread_attr_t *,
+                     void *(*)(void *), void *);
 int pthread_create(pthread_t *, const pthread_attr_t *,
                    void *(*)(void *), void *);
 int pthread_detach(pthread_t __th);
@@ -203,6 +209,25 @@ int pthread_key_delete(pthread_key_t key);
 void *pthread_getspecific(pthread_key_t key);
 int pthread_setspecific(pthread_key_t key, const void *value);
 
+/* Common stuff. */
+int pthread_equal(pthread_t __thread1, pthread_t __thread2);
+int pthread_getattr_np(pthread_t __th, pthread_attr_t *__attr);
+int pthread_attr_getstack(const pthread_attr_t *__attr,
+                           void **__stackaddr, size_t *__stacksize);
+
+/* Unsupported Stuff */
+typedef void *upthread_once_t;
+extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
+                    const struct timespec *__restrict
+                    __abstime) __THROWNL __nonnull ((1, 2));
+extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
+                   pthread_mutex_t *__restrict __mutex,
+                   const struct timespec *__restrict __abstime)
+     __nonnull ((1, 2, 3));
+extern int pthread_once (pthread_once_t *__once_control,
+             void (*__init_routine) (void)) __nonnull ((1, 2));
+extern int pthread_cancel (pthread_t __th);
+
 #ifdef __cplusplus
   }
 #endif