OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [newlib-1.17.0/] [newlib/] [libc/] [sys/] [rdos/] [rdoshelp.c] - Diff between revs 148 and 158

Only display areas with differences | Details | Blame | View Log

Rev 148 Rev 158
/*#######################################################################
/*#######################################################################
# RDOS operating system
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
# Copyright (C) 1988-2006, Leif Ekblad
#
#
# This library is free software; you can redistribute it and/or modify
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
# (at your option) any later version.
#
#
# This library is distributed in the hope that it will be useful,
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
# GNU Lesser General Public License for more details.
#
#
# You should have received a copy of the GNU Lesser General Public
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# The author of this program may be contacted at leif@rdos.net
# The author of this program may be contacted at leif@rdos.net
#
#
# rdoshelp.c
# rdoshelp.c
# implementation of various structures and helpers
# implementation of various structures and helpers
#
#
##########################################################################*/
##########################################################################*/
 
 
#include <reent.h>
#include <reent.h>
#include <rdos.h>
#include <rdos.h>
#include <stdio.h>
#include <stdio.h>
 
 
char *__env[1] = { 0 };
char *__env[1] = { 0 };
char **environ = __env;
char **environ = __env;
 
 
static int once_section;
static int once_section;
static int key_section;
static int key_section;
 
 
/*##########################################################################
/*##########################################################################
#
#
#   Name       : _get_impure_data_size
#   Name       : _get_impure_data_size
#
#
#   Purpose....: Get size of _reent structure
#   Purpose....: Get size of _reent structure
#
#
#   In params..: *
#   In params..: *
#   Out params.: *
#   Out params.: *
#   Returns....: size
#   Returns....: size
#
#
##########################################################################*/
##########################################################################*/
int get_impure_data_size()
int get_impure_data_size()
{
{
        return sizeof(struct _reent);
        return sizeof(struct _reent);
}
}
 
 
/*##########################################################################
/*##########################################################################
#
#
#   Name       : __rdos_thread_once
#   Name       : __rdos_thread_once
#
#
#   Purpose....: Emulate GCC pthread_once
#   Purpose....: Emulate GCC pthread_once
#
#
#   In params..: Handle initially 0
#   In params..: Handle initially 0
#              : function to initially call
#              : function to initially call
#   Out params.: *
#   Out params.: *
#   Returns....: result
#   Returns....: result
#
#
##########################################################################*/
##########################################################################*/
int __rdos_thread_once (int *handle, void (*func) (void))
int __rdos_thread_once (int *handle, void (*func) (void))
{
{
    if (handle == 0 || func == 0)
    if (handle == 0 || func == 0)
        return 0;
        return 0;
 
 
    RdosEnterSection(once_section);
    RdosEnterSection(once_section);
    if (*handle == 0)
    if (*handle == 0)
        (*func)();
        (*func)();
    else
    else
        *handle = 1;
        *handle = 1;
    RdosLeaveSection(once_section);
    RdosLeaveSection(once_section);
    return 0;
    return 0;
}
}
 
 
/*##########################################################################
/*##########################################################################
#
#
#   Name       : __rdos_thread_mutex_init
#   Name       : __rdos_thread_mutex_init
#
#
#   Purpose....: Emulate GCC pthread_thread_mutex_init
#   Purpose....: Emulate GCC pthread_thread_mutex_init
#
#
#   In params..: *
#   In params..: *
#   Out params.: *
#   Out params.: *
#   Returns....: handle
#   Returns....: handle
#
#
##########################################################################*/
##########################################################################*/
int __rdos_thread_mutex_init (void)
int __rdos_thread_mutex_init (void)
{
{
    return RdosCreateSection();
    return RdosCreateSection();
}
}
 
 
/*##########################################################################
/*##########################################################################
#
#
#   Name       : __rdos_thread_mutex_lock
#   Name       : __rdos_thread_mutex_lock
#
#
#   Purpose....: Emulate GCC pthread_thread_mutex_lock
#   Purpose....: Emulate GCC pthread_thread_mutex_lock
#
#
#   In params..: handle
#   In params..: handle
#   Out params.: *
#   Out params.: *
#   Returns....: *
#   Returns....: *
#
#
##########################################################################*/
##########################################################################*/
int __rdos_thread_mutex_lock (int handle)
int __rdos_thread_mutex_lock (int handle)
{
{
    RdosEnterSection(handle);
    RdosEnterSection(handle);
    return 0;
    return 0;
}
}
 
 
/*##########################################################################
/*##########################################################################
#
#
#   Name       : __rdos_thread_mutex_trylock
#   Name       : __rdos_thread_mutex_trylock
#
#
#   Purpose....: Emulate GCC pthread_thread_mutex_trylock
#   Purpose....: Emulate GCC pthread_thread_mutex_trylock
#                Try is not yet implemented, and lock is used.
#                Try is not yet implemented, and lock is used.
#
#
#   In params..: handle
#   In params..: handle
#   Out params.: *
#   Out params.: *
#   Returns....: *
#   Returns....: *
#
#
##########################################################################*/
##########################################################################*/
int __rdos_thread_mutex_trylock (int handle)
int __rdos_thread_mutex_trylock (int handle)
{
{
    RdosEnterSection(handle);
    RdosEnterSection(handle);
    return 0;
    return 0;
}
}
 
 
/*##########################################################################
/*##########################################################################
#
#
#   Name       : __rdos_thread_mutex_unlock
#   Name       : __rdos_thread_mutex_unlock
#
#
#   Purpose....: Emulate GCC pthread_thread_mutex_unlock
#   Purpose....: Emulate GCC pthread_thread_mutex_unlock
#
#
#   In params..: handle
#   In params..: handle
#   Out params.: *
#   Out params.: *
#   Returns....: *
#   Returns....: *
#
#
##########################################################################*/
##########################################################################*/
int __rdos_thread_mutex_unlock (int handle)
int __rdos_thread_mutex_unlock (int handle)
{
{
    RdosLeaveSection(handle);
    RdosLeaveSection(handle);
    return 0;
    return 0;
}
}
 
 
/*##########################################################################
/*##########################################################################
#
#
#   Name       : __init_rdos
#   Name       : __init_rdos
#
#
#   Purpose....: Init RDOS specific data
#   Purpose....: Init RDOS specific data
#
#
#   In params..: reent structure
#   In params..: reent structure
#   Out params.: *
#   Out params.: *
#   Returns....: *
#   Returns....: *
#
#
##########################################################################*/
##########################################################################*/
void __init_rdos(struct _reent *reent)
void __init_rdos(struct _reent *reent)
{
{
        once_section = RdosCreateSection();
        once_section = RdosCreateSection();
        _REENT_INIT_PTR(reent);
        _REENT_INIT_PTR(reent);
        __sinit(reent);
        __sinit(reent);
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.