Provide our own newlib libc
Newlib 2.2.0 w/ nan ofeatures, xtensa patches, locking implementation. Built from https://github.com/projectgus/newlib-xtensa branch xtensa-2_2_0-lock commit daa6ae40cdc8099f54c3e68a586fc1b906169c5a For more details, see: https://github.com/SuperHouse/esp-open-rtos/wiki/libc-configuration Closes #1
This commit is contained in:
parent
a566a51c09
commit
689cf874b2
112 changed files with 23413 additions and 0 deletions
50
libc/xtensa-lx106-elf/include/sys/lock.h
Normal file
50
libc/xtensa-lx106-elf/include/sys/lock.h
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#ifndef _XTENSA_LOCK_H__
|
||||
#define _XTENSA_LOCK_H__
|
||||
|
||||
/* generic lock implementation.
|
||||
|
||||
Weak linked stub _lock functions in lock.c, can be
|
||||
replaced with a lock implementation at link time.
|
||||
|
||||
*/
|
||||
|
||||
typedef int _lock_t;
|
||||
typedef _lock_t _LOCK_RECURSIVE_T;
|
||||
typedef _lock_t _LOCK_T;
|
||||
|
||||
#include <_ansi.h>
|
||||
|
||||
/* NOTE: some parts of newlib statically initialise locks via
|
||||
__LOCK_INIT, some initialise at runtime via __lock_init. So need to
|
||||
support possibility that a _lock_t is null during first call to
|
||||
_lock_acquire or _lock_try_acquire.
|
||||
|
||||
Lock functions all take a pointer to the _lock_t entry, so the
|
||||
value stored there can be manipulated.
|
||||
*/
|
||||
#define __LOCK_INIT(CLASS,NAME) CLASS _lock_t NAME = 0;
|
||||
#define __LOCK_INIT_RECURSIVE(CLASS,NAME) CLASS _lock_t NAME = 0;
|
||||
|
||||
void _lock_init(_lock_t *lock);
|
||||
void _lock_init_recursive(_lock_t *lock);
|
||||
void _lock_close(_lock_t *lock);
|
||||
void _lock_close_recursive(_lock_t *lock);
|
||||
void _lock_acquire(_lock_t *lock);
|
||||
void _lock_acquire_recursive(_lock_t *lock);
|
||||
int _lock_try_acquire(_lock_t *lock);
|
||||
int _lock_try_acquire_recursive(_lock_t *lock);
|
||||
void _lock_release(_lock_t *lock);
|
||||
void _lock_release_recursive(_lock_t *lock);
|
||||
|
||||
#define __lock_init(lock) _lock_init(&(lock))
|
||||
#define __lock_init_recursive(lock) _lock_init_recursive(&(lock))
|
||||
#define __lock_close(lock) _lock_close(&(lock))
|
||||
#define __lock_close_recursive(lock) _lock_close_recursive(&(lock))
|
||||
#define __lock_acquire(lock) _lock_acquire(&(lock))
|
||||
#define __lock_acquire_recursive(lock) _lock_acquire_recursive(&(lock))
|
||||
#define __lock_try_acquire(lock) _lock_try_acquire(&(lock))
|
||||
#define __lock_try_acquire_recursive(lock) _lock_try_acquire_recursive(&(lock))
|
||||
#define __lock_release(lock) _lock_release(&(lock))
|
||||
#define __lock_release_recursive(lock) _lock_release_recursive(&(lock))
|
||||
|
||||
#endif /* _XTENSA_LOCK_H__ */
|
||||
Loading…
Add table
Add a link
Reference in a new issue