openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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 */