⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mutex.c

📁 最新版的BCC, bcc-src-1.0.29c.rar,基于sparc平台处理器leon2,leon3,v7,v8等系列的linux环境下交叉编译工具
💻 C
字号:
#include <sys/types.h>#include <sys/lock.h>#include <sys/fsu_pthread_mutex.h>int (*__lbst_pthread_mutex_init)        (pthread_mutex_t *__mutex, pthread_mutexattr_t *__mutex_attr) = 0; int (*__lbst_pthread_mutex_destroy)     (pthread_mutex_t *__mutex) = 0; int (*__lbst_pthread_mutex_trylock)     (pthread_mutex_t *__mutex) = 0; int (*__lbst_pthread_mutex_lock)        (pthread_mutex_t *__mutex) = 0; int (*__lbst_pthread_mutex_unlock)      (pthread_mutex_t *__mutex) = 0; int (*__lbst_pthread_mutexattr_init)    (pthread_mutexattr_t *__attr) = 0; int (*__lbst_pthread_mutexattr_destroy) (pthread_mutexattr_t *__attr) = 0; int (*__lbst_pthread_mutexattr_settype) (pthread_mutexattr_t *__attr, int __kind) = 0; int ___st_pthread_mutex_init(mutex, attr)     pthread_mutex_t *mutex;     pthread_mutexattr_t *attr;{  if (__lbst_pthread_mutex_init) {    return __lbst_pthread_mutex_init(mutex,attr);  }  return 0;  }int ___st_pthread_mutex_destroy(mutex)      pthread_mutex_t *mutex;{  if (__lbst_pthread_mutex_destroy) {    return __lbst_pthread_mutex_destroy(mutex);  }  return 0;}int ___st_pthread_mutex_lock(mutex)     pthread_mutex_t *mutex;{  if (__lbst_pthread_mutex_lock){    return __lbst_pthread_mutex_lock(mutex);  }  return 0;}int ___st_pthread_mutex_trylock(mutex)     pthread_mutex_t *mutex;{  if (__lbst_pthread_mutex_trylock) {    return __lbst_pthread_mutex_trylock(mutex);  }  return 0;}int ___st_pthread_mutex_unlock(mutex)     pthread_mutex_t *mutex;{  if(__lbst_pthread_mutex_unlock){    return __lbst_pthread_mutex_unlock(mutex);  }  return 0;}int ___st_pthread_mutexattr_init(attr)     pthread_mutexattr_t *attr;{  if (__lbst_pthread_mutexattr_init) {    return __lbst_pthread_mutexattr_init(attr);  }  return(0);}int ___st_pthread_mutexattr_destroy(attr)     pthread_mutexattr_t *attr;{  if (__lbst_pthread_mutexattr_destroy) {    return __lbst_pthread_mutexattr_destroy(attr);  }  return 0;}int ___st_pthread_mutexattr_settype(attr,kind)     pthread_mutexattr_t *attr;     int kind;{  if (__lbst_pthread_mutexattr_settype){    return __lbst_pthread_mutexattr_settype(attr,kind);  }  return 0;}#include <asm-leon/elfmacro.h>weak_alias(___st_pthread_mutex_init,__st_pthread_mutex_init)weak_alias(___st_pthread_mutex_destroy,__st_pthread_mutex_destroy)weak_alias(___st_pthread_mutex_trylock,__st_pthread_mutex_trylock)weak_alias(___st_pthread_mutex_lock,__st_pthread_mutex_lock)weak_alias(___st_pthread_mutex_unlock,__st_pthread_mutex_unlock)weak_alias(___st_pthread_mutexattr_init,__st_pthread_mutexattr_init)weak_alias(___st_pthread_mutexattr_destroy,__st_pthread_mutexattr_destroy)weak_alias(___st_pthread_mutexattr_settype,__st_pthread_mutexattr_settype)/* /\* #ifndef weak_extern *\/ *//* /\* #define weak_extern(symbol) _weak_extern (symbol) *\/ *//* /\* #define _weak_extern(symbol) asm (".weak " #symbol); *\/ *//* /\* #endif *\/ *//* /\* weak_extern (__pthread_mutex_init) *\/ *//* /\* weak_extern (__pthread_mutex_destroy) *\/ *//* /\* weak_extern (__pthread_mutex_lock) *\/ *//* /\* weak_extern (__pthread_mutex_trylock) *\/ *//* /\* weak_extern (__pthread_mutex_unlock) *\/ *//* /\* weak_extern (__pthread_mutexattr_init) *\/ *//* /\* weak_extern (__pthread_mutexattr_destroy) *\/ *//* /\* weak_extern (__pthread_mutexattr_settype) *\/ *//* /\* weak_extern (__pthread_once) *\/ *//* /\* weak_extern (__pthread_initialize) *\/ *//* /\* Initialize the named lock variable, leaving it in a consistent, unlocked *//*    state.  *\/ *//* #define __libc_lock_init(NAME) \ *//*   (__pthread_mutex_init != NULL ? __pthread_mutex_init (&(NAME), NULL) : 0); *//* /\* Same as last but this time we initialize a recursive mutex.  *\/ *//* #define __libc_lock_init_recursive(NAME) \ *//*   do {									      \ *//*     if (__pthread_mutex_init != NULL)					      \ *//*       {									      \ *//* 	pthread_mutexattr_t __attr;					      \ *//* 	__pthread_mutexattr_init (&__attr);				      \ *//* 	__pthread_mutexattr_settype (&__attr, PTHREAD_MUTEX_RECURSIVE_NP); \ *//* 	__pthread_mutex_init (&(NAME), &__attr);			      \ *//* 	__pthread_mutexattr_destroy (&__attr);				      \ *//*       }									      \ *//*   } while (0); *//* /\* Finalize the named lock variable, which must be locked.  It cannot be *//*    used again until __libc_lock_init is called again on it.  This must be *//*    called on a lock variable before the containing storage is reused.  *\/ *//* //#define __libc_lock_fini(NAME)              (__pthread_mutex_destroy != NULL ? __pthread_mutex_destroy (&(NAME)) : 0) *//* #define __libc_lock_fini(NAME)              (__st_pthread_mutex_destroy (&(NAME))) *//* /\* Finalize recursive named lock.  *\/ *//* #define __libc_lock_fini_recursive(NAME)     __libc_lock_fini (NAME) *//* /\* Lock the named lock variable.  *\/ *//* //#define __libc_lock_lock(NAME)              (__pthread_mutex_lock != NULL ? __pthread_mutex_lock (&(NAME)) : 0) *//* #define __libc_lock_lock(NAME)              (__st_pthread_mutex_lock (&(NAME))) *//* /\* Lock the recursive named lock variable.  *\/ *//* #define __libc_lock_lock_recursive(NAME)     __libc_lock_lock (NAME) *//* /\* Try to lock the named lock variable.  *\/ *//* //#define __libc_lock_trylock(NAME)           (__pthread_mutex_trylock != NULL ? __pthread_mutex_trylock (&(NAME)) : 0) *//* #define __libc_lock_trylock(NAME)           (__st_pthread_mutex_trylock (&(NAME))) *//* /\* Try to lock the recursive named lock variable.  *\/ *//* #define __libc_lock_trylock_recursive(NAME)  __libc_lock_trylock (NAME) *//* /\* Unlock the named lock variable.  *\/ *//* //#define __libc_lock_unlock(NAME)            (__pthread_mutex_unlock != NULL ? __pthread_mutex_unlock (&(NAME)) : 0) *//* #define __libc_lock_unlock(NAME)            (__st_pthread_mutex_unlock (&(NAME))) *//* /\* Unlock the recursive named lock variable.  *\/ *//* #define __libc_lock_unlock_recursive(NAME)   __libc_lock_unlock (NAME) *//* extern int __st_pthread_mutex_init        (pthread_mutex_t *__mutex, pthread_mutexattr_t *__mutex_attr); *//* extern int __st_pthread_mutex_destroy     (pthread_mutex_t *__mutex); *//* extern int __st_pthread_mutex_trylock     (pthread_mutex_t *__mutex); *//* extern int __st_pthread_mutex_lock        (pthread_mutex_t *__mutex); *//* extern int __st_pthread_mutex_unlock      (pthread_mutex_t *__mutex); *//* extern int __st_pthread_mutexattr_init    (pthread_mutexattr_t *__attr); *//* extern int __st_pthread_mutexattr_destroy (pthread_mutexattr_t *__attr); *//* extern int __st_pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind); *//* /\* /\\* Functions that are used by this file and are internal to the GNU C library.  *\\/ *\/ *//* /\* extern int __pthread_mutex_init        (pthread_mutex_t *__mutex, pthread_mutexattr_t *__mutex_attr); *\/ *//* /\* extern int __pthread_mutex_destroy     (pthread_mutex_t *__mutex); *\/ *//* /\* extern int __pthread_mutex_trylock     (pthread_mutex_t *__mutex); *\/ *//* /\* extern int __pthread_mutex_lock        (pthread_mutex_t *__mutex); *\/ *//* /\* extern int __pthread_mutex_unlock      (pthread_mutex_t *__mutex); *\/ *//* /\* extern int __pthread_mutexattr_init    (pthread_mutexattr_t *__attr); *\/ *//* /\* extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *__attr); *\/ *//* /\* extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind); *\/ *//* /\* /\\* Make the pthread functions weak so that we can elide them from *\/ *//* /\*    single-threaded processes.  *\\/ *\/ *//* /\* #ifndef weak_extern *\/ *//* /\* #define weak_extern(symbol) _weak_extern (symbol) *\/ *//* /\* #define _weak_extern(symbol) asm (".weak " #symbol); *\/ *//* /\* #endif *\/ *//* /\* weak_extern (__pthread_mutex_init) *\/ *//* /\* weak_extern (__pthread_mutex_destroy) *\/ *//* /\* weak_extern (__pthread_mutex_lock) *\/ *//* /\* weak_extern (__pthread_mutex_trylock) *\/ *//* /\* weak_extern (__pthread_mutex_unlock) *\/ *//* /\* weak_extern (__pthread_mutexattr_init) *\/ *//* /\* weak_extern (__pthread_mutexattr_destroy) *\/ *//* /\* weak_extern (__pthread_mutexattr_settype) *\/ *//* /\* weak_extern (__pthread_once) *\/ *//* /\* weak_extern (__pthread_initialize) *\/ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -