diff -r 000000000000 -r bde4ae8d615e os/ossrv/genericopenlibs/cstdlib/LINC/REENT.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/genericopenlibs/cstdlib/LINC/REENT.H Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,139 @@ +/* +* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* The reentrant system calls here serve two purposes: +* 1) Provide reentrant versions of the system calls the ANSI C library +* requires. +* 2) Provide these system calls in a namespace clean way. +* It is intended that *all* system calls that the ANSI C library needs +* be declared here. It documents them all in one place. All library access +* to the system is via some form of these functions. +* There are three ways a target may provide the needed syscalls. +* 1) Define the reentrant versions of the syscalls directly. +* (eg: _open_r, _close_r, etc.). Please keep the namespace clean. +* When you do this, set "syscall_dir" to "syscalls" in configure.in, +* and add -DREENTRANT_SYSCALLS_PROVIDED to target_cflags in configure.in. +* 2) Define namespace clean versions of the system calls by prefixing +* them with '_' (eg: _open, _close, etc.). Technically, there won't be +* true reentrancy at the syscall level, but the library will be namespace +* clean. +* When you do this, set "syscall_dir" to "syscalls" in configure.in. +* 3) Define or otherwise provide the regular versions of the syscalls +* (eg: open, close, etc.). The library won't be reentrant nor namespace +* clean, but at least it will work. +* When you do this, add -DMISSING_SYSCALL_NAMES to target_cflags in +* configure.in. +* Stubs of the reentrant versions of the syscalls exist in the libc/reent +* source directory and are used if REENTRANT_SYSCALLS_PROVIDED isn't defined. +* They use the native system calls: _open, _close, etc. if they're available +* (MISSING_SYSCALL_NAMES is *not* defined), otherwise open, close, etc. +* (MISSING_SYSCALL_NAMES *is* defined). +* WARNING: All identifiers here must begin with an underscore. This file is +* included by stdio.h and others and we therefore must only use identifiers +* in the namespace allotted to us. +* +* +*/ + + + +/** + @file + @publishedAll + @released +*/ + +#ifndef _REENT_H_ +#define _REENT_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#define __need_size_t +#include <stddef.h> + +#include <sys/reent.h> +#include <sys/_types.h> +#include <sys/types.h> + +/* FIX THIS: not namespace clean */ + +//Forward Declaration, For Internal Use Only +struct stat; + +struct sockaddr; + +/** +Reentrant versions of system calls. +Most of these are thread-safe in EPOC32 anyway +*/ +IMPORT_C int _chdir_r (struct _reent *, const char *); +IMPORT_C int _wchdir_r (struct _reent *, const wchar_t *); +IMPORT_C int _chmod_r (struct _reent *, const char *, mode_t); +IMPORT_C int _wchmod_r (struct _reent *, const wchar_t *, mode_t); +IMPORT_C int _close_r (struct _reent *, int); +IMPORT_C int _dup_r (struct _reent *, int); +IMPORT_C int _dup2_r (struct _reent *, int, int); +IMPORT_C int _fcntl_r (struct _reent *, int, int, int); +IMPORT_C int _fork_r (struct _reent *); +IMPORT_C int _fstat_r (struct _reent *, int, struct stat *); +IMPORT_C int _fsync_r (struct _reent *, int); +IMPORT_C char* _getcwd_r (struct _reent *, char *, size_t); +IMPORT_C wchar_t* _wgetcwd_r (struct _reent *, wchar_t *, size_t); +IMPORT_C int _ioctl_r (struct _reent *, int, int, void *); +IMPORT_C int _kill_r (struct _reent *, int, int); +IMPORT_C int _link_r (struct _reent *, const char *, const char *); +IMPORT_C off_t _lseek_r (struct _reent *, int, _off_t, int); +IMPORT_C int _mkdir_r (struct _reent *, const char *, mode_t); +IMPORT_C int _wmkdir_r (struct _reent *, const wchar_t *, mode_t); +IMPORT_C int _open_r (struct _reent *, const char *, int, int); +IMPORT_C int _wopen_r (struct _reent *, const wchar_t *, int, int); +IMPORT_C int _read_r (struct _reent *, int, char *, size_t); +IMPORT_C char * _realpath_r (struct _reent *, const char *, char *); +IMPORT_C wchar_t * _wrealpath_r (struct _reent *, const wchar_t *, wchar_t *); +IMPORT_C int _rename_r (struct _reent *, const char *_old, const char *_new); +IMPORT_C int _wrename_r (struct _reent *, const wchar_t *_old, const wchar_t *_new); +IMPORT_C int _rmdir_r (struct _reent *, const char *); +IMPORT_C int _wrmdir_r (struct _reent *, const wchar_t *); +IMPORT_C int _stat_r (struct _reent *, const char *, struct stat *); +IMPORT_C int _wstat_r (struct _reent *, const wchar_t *, struct stat *); +IMPORT_C int _unlink_r (struct _reent *, const char *); +IMPORT_C int _wunlink_r (struct _reent *, const wchar_t *); +IMPORT_C int _wait_r (struct _reent *, int *); +IMPORT_C int _waitpid_r (struct _reent *, int, int *, int); +IMPORT_C int _write_r (struct _reent *, int, const char *, size_t); + +IMPORT_C int _accept_r (struct _reent*, int, struct sockaddr *, size_t *); +IMPORT_C int _bind_r (struct _reent*, int, struct sockaddr *, size_t); +IMPORT_C int _connect_r (struct _reent*, int, struct sockaddr *, size_t); +IMPORT_C int _getpeername_r (struct _reent*, int, struct sockaddr *, size_t *); +IMPORT_C int _getsockname_r (struct _reent*, int, struct sockaddr *, size_t *); +IMPORT_C int _getsockopt_r (struct _reent*, int, int, int, void *, size_t *); +IMPORT_C int _listen_r (struct _reent*, int, int); +IMPORT_C int _recv_r (struct _reent*, int, char *, size_t, int); +IMPORT_C int _recvfrom_r (struct _reent*, int, char *, size_t, int, struct sockaddr *, size_t *); +IMPORT_C int _send_r (struct _reent*, int, const char *, size_t, int); +IMPORT_C int _sendto_r (struct _reent*, int, const char *, size_t, int, struct sockaddr *, size_t); +IMPORT_C int _setsockopt_r (struct _reent*, int, int, int, void *, size_t); +IMPORT_C int _socket_r (struct _reent*, int, int, int); +IMPORT_C int _shutdown_r (struct _reent*, int, int); + +#define _remove_r(r,x) _unlink_r(r,x) +#define _wremove_r(r,x) _wunlink_r(r,x) + +#ifdef __cplusplus +} +#endif +#endif /* _REENT_H_ */