\r
int mtx_lock(mtx_t *mtx)\r
{\r
- if(*mtx == 0) {\r
- *mtx = 1;\r
- return thrd_success;\r
- } else return thrd_error;\r
+ (*mtx)++;\r
+ return thrd_success;\r
}\r
#endif\r
\r
\r
int mtx_trylock(mtx_t *mtx)\r
{\r
- if(*mtx) {\r
- return thrd_error;\r
- } else {\r
- *mtx = 1;\r
- return thrd_success;\r
- }\r
+ (*mtx)++;\r
+ return thrd_success;\r
}\r
#endif\r
\r
\r
int mtx_unlock(mtx_t *mtx)\r
{\r
- if(*mtx) {\r
- *mtx = 0;\r
- return thrd_success;\r
- } else return thrd_error;\r
+ if(--(*mtx) >= 0)\r
+ return thrd_success;\r
+ return thrd_error;\r
}\r
#endif\r
\r