mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-23 07:57:38 +01:00
(sos_memp): Drop static initializer.
(pg_size): Likewise. (sos_alloc): Initialize sos_memp if it's still 0. (Logical change 1.151)
This commit is contained in:
parent
0b29e6839b
commit
fa6ca5610d
1 changed files with 7 additions and 2 deletions
|
@ -37,8 +37,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
#define SOS_MEMORY_SIZE 16384
|
#define SOS_MEMORY_SIZE 16384
|
||||||
|
|
||||||
static char sos_memory[SOS_MEMORY_SIZE];
|
static char sos_memory[SOS_MEMORY_SIZE];
|
||||||
static char *sos_memp = sos_memory;
|
static char *sos_memp;
|
||||||
static size_t pg_size = 0;
|
static size_t pg_size;
|
||||||
|
|
||||||
HIDDEN void *
|
HIDDEN void *
|
||||||
sos_alloc (size_t size)
|
sos_alloc (size_t size)
|
||||||
|
@ -49,6 +49,8 @@ sos_alloc (size_t size)
|
||||||
char *old_mem;
|
char *old_mem;
|
||||||
|
|
||||||
size = (size + MAX_ALIGN - 1) & -MAX_ALIGN;
|
size = (size + MAX_ALIGN - 1) & -MAX_ALIGN;
|
||||||
|
if (!sos_memp)
|
||||||
|
cmpxchg_ptr (&sos_memp, 0, sos_memory);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
old_mem = sos_memp;
|
old_mem = sos_memp;
|
||||||
|
@ -68,6 +70,9 @@ sos_alloc (size_t size)
|
||||||
sigprocmask (SIG_SETMASK, &unwi_full_sigmask, &saved_sigmask);
|
sigprocmask (SIG_SETMASK, &unwi_full_sigmask, &saved_sigmask);
|
||||||
mutex_lock(&sos_lock);
|
mutex_lock(&sos_lock);
|
||||||
{
|
{
|
||||||
|
if (!sos_memp)
|
||||||
|
sos_memp = sos_memory;
|
||||||
|
|
||||||
mem = (char *) (((unsigned long) sos_memp + MAX_ALIGN - 1) & -MAX_ALIGN);
|
mem = (char *) (((unsigned long) sos_memp + MAX_ALIGN - 1) & -MAX_ALIGN);
|
||||||
mem += size;
|
mem += size;
|
||||||
if (mem >= sos_memory + sizeof (sos_memory))
|
if (mem >= sos_memory + sizeof (sos_memory))
|
||||||
|
|
Loading…
Reference in a new issue