thread.h (1876B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: thread.h 8 * Purpose: SAL thread definitions 9 */ 10 11 #ifndef _SAL_THREAD_H 12 #define _SAL_THREAD_H 13 14 #include <sdk_config.h> 15 16 typedef struct sal_thread_s{ 17 char thread_opaque_type; 18 } *sal_thread_t; 19 20 #define SAL_THREAD_ERROR ((sal_thread_t) -1) 21 #ifndef SAL_THREAD_STKSZ 22 #define SAL_THREAD_STKSZ 16384 /* Default Stack Size */ 23 #endif 24 25 #define SAL_THREAD_NAME_MAX_LEN 80 26 #define SAL_THREAD_PRIO_NO_PREEMPT -1 27 28 extern sal_thread_t sal_thread_create(char *, int, int, 29 void (f)(void *), void *); 30 extern int sal_thread_destroy(sal_thread_t); 31 extern sal_thread_t sal_thread_self(void); 32 extern char* sal_thread_name(sal_thread_t thread, 33 char *thread_name, int thread_name_size); 34 extern void sal_thread_exit(int); 35 extern void sal_thread_yield(void); 36 extern void sal_thread_main_set(sal_thread_t thread); 37 extern sal_thread_t sal_thread_main_get(void); 38 extern int sal_thread_id_get(void); 39 40 41 42 #define sal_msleep(x) sal_usleep((x) * 1000) 43 extern void sal_sleep(int sec); 44 extern void sal_usleep(unsigned int usec); 45 extern void sal_udelay(unsigned int usec); 46 47 #ifdef BROADCOM_DEBUG 48 #ifdef INCLUDE_BCM_SAL_PROFILE 49 extern void 50 sal_thread_resource_usage_get( 51 unsigned int *sal_thread_count_curr, 52 unsigned int *sal_stack_size_curr, 53 unsigned int *sal_thread_count_max, 54 unsigned int *sal_stack_size_max); 55 #endif 56 #endif 57 58 59 typedef void sal_tls_key_t; 60 61 extern sal_tls_key_t * sal_tls_key_create(void (*destructor)(void *)); 62 extern int sal_tls_key_set(sal_tls_key_t *, void *); 63 extern void * sal_tls_key_get(sal_tls_key_t *); 64 extern int sal_tls_key_delete(sal_tls_key_t *); 65 66 #endif /* !_SAL_THREAD_H */