eCos Reference Manual
Prev | Chapter 31. POSIX Standard Support | Next

# Thread Management [POSIX Section 16]

## Functions Implemented

    int pthread_attr_init(pthread_attr_t *attr);
    int pthread_attr_destroy(pthread_attr_t *attr);
    int pthread_attr_setdetachstate(pthread_attr_t *attr,
                                    int detachstate);
    int pthread_attr_getdetachstate(const pthread_attr_t *attr,
    	                        int *detachstate);
    int pthread_attr_setstackaddr(pthread_attr_t *attr,
                                  void *stackaddr);
    int pthread_attr_getstackaddr(const pthread_attr_t *attr,
    	                      void **stackaddr);
    int pthread_attr_setstacksize(pthread_attr_t *attr,
                                  size_t stacksize);
    int pthread_attr_getstacksize(const pthread_attr_t *attr,
    	                      size_t *stacksize);
    int pthread_create( pthread_t *thread,
                        const pthread_attr_t *attr,
    	            void *(*start_routine)(void *),
    	            void *arg);
    pthread_t pthread_self( void );
    int pthread_equal(pthread_t thread1, pthread_t thread2);
    void pthread_exit(void *retval);
    int pthread_join(pthread_t thread, void **thread_return);
    int pthread_detach(pthread_t thread);
    int pthread_once(pthread_once_t *once_control,
    	         void (*init_routine)(void));

## Functions Omitted

<none>

## Notes

- The presence of thread support as a whole is controlled by the the CYGPKG_POSIX_PTHREAD configuration option. Note that disabling this will also disable many other features of the POSIX package, since these are intimately bound up with the thread mechanism.

- The default (non-scheduling) thread attributes are:

          detachstate            PTHREAD_CREATE_JOINABLE
          stackaddr              unset
          stacksize              unset

- Dynamic thread stack allocation is only provided if there is an implementation of malloc() configured (i.e. a package implements the CYGINT_MEMALLOC_MALLOC_ALLOCATORS interface). If there is no malloc() available, then the thread creator must supply a stack. If only a stack address is supplied then the stack is assumed to be PTHREAD_STACK_MIN bytes long. This size is seldom useful for any but the most trivial of threads. If a different sized stack is used, both the stack address and stack size must be supplied.

- The value of PTHREAD_THREADS_MAX is supplied by the CYGNUM_POSIX_PTHREAD_THREADS_MAX option. This defines the maximum number of threads allowed. The POSIX standard requires this value to be at least 64, and this is the default value set.

- When the POSIX package is installed, the thread that calls main() is initialized as a POSIX thread. The priority of that thread is controlled by the CYGNUM_POSIX_MAIN_DEFAULT_PRIORITY option.

Prev | Home | Next
Message Passing [POSIX Section 15] | Up | Thread-Specific Data [POSIX Section 17]