Ignore:
Timestamp:
May 8, 2005, 2:11:22 PM (20 years ago)
Author:
bird
Message:

Ported the BSD SysV Semaphore module.

Location:
trunk/src/emx/include/InnoTekLIBC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/include/InnoTekLIBC/FastInfoBlocks.h

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.2
    r1983 r1984  
    130130 * System stuff
    131131 */
     132/** Get the current millisecond counter value. */
    132133#define fibGetMsCount()         (__libc_GpFIBGIS->SIS_MsCount)
     134/** Get the Unix timestamp (seconds). */
     135#define fibGetUnixSeconds()     (__libc_GpFIBGIS->SIS_BigTime)
    133136
    134137
  • trunk/src/emx/include/InnoTekLIBC/backend.h

    • Property cvs2svn:cvs-rev changed from 1.22 to 1.23
    r1983 r1984  
    3434#include <sys/time.h>
    3535#include <sys/wait.h>
     36#include <sys/sem.h>
    3637#include <signal.h>
    3738#include <emx/io.h>
     
    890891/** @} */
    891892
     893
     894/** @defgroup grp_Back_sysvipc LIBC Backend - SysV IPC
     895 * @{ */
     896/**
     897 * semctl syscall
     898 */
     899int __libc_Back_sysvSemCtl(int semid, int semnum, int cmd, union semun real_arg);
     900
     901/**
     902 * sysget syscall.
     903 */
     904int __libc_Back_sysvSemGet(key_t key, int nsems, int semflg);
     905
     906/**
     907 * semop syscall.
     908 */
     909int __libc_Back_sysvSemOp(int semid, struct sembuf *sops_user, size_t nsops);
     910
     911/** @} */
     912
    892913__END_DECLS
    893914
  • trunk/src/emx/include/InnoTekLIBC/sharedpm.h

    • Property cvs2svn:cvs-rev changed from 1.21 to 1.22
    r1983 r1984  
    44 * LIBC Shared Process Management.
    55 *
    6  *
     6 * Copyright (c) 2004-2005 knut st. osmundsen <bird@anduin.net>
     7 * Copyright (c) 2004 nickk
    78 *
    89 * This file is part of InnoTek LIBC.
     
    3031#include <sys/types.h>
    3132#include <sys/signal.h>
     33#include <sys/ipc.h>
    3234
    3335
     
    553555    unsigned long                       hevNotify;
    554556
    555     /*  116 - The rest of the block, up to cbProcess, is undefined in this version.
     557    /** 116 - Pointer to SysV Sempahore globals. */
     558    struct __libc_SysV_Sem             *pSysVSem;
     559
     560    /*  120 - The rest of the block, up to cbProcess, is undefined in this version.
    556561     * Future versions of LIBC may use this area assuming it's initalized with zeros.
    557562     */
     
    729734
    730735/**
     736 * Checks if the calling process is a member of the specified group.
     737 *
     738 * @returns 0 if member.
     739 * @returns -EPERM if not member.
     740 * @param   gid     The group id in question.
     741 */
     742int __libc_spmIsGroupMember(gid_t gid);
     743
     744/**
     745 * Check if the caller can access the SysV IPC object as requested.
     746 *
     747 * @returns 0 if we can.
     748 * @returns -EPERM if we cannot.
     749 * @param   pPerm       The IPC permission structure.
     750 * @param   Mode        The access request. IPC_M, IPC_W or IPC_R.
     751 */
     752int __libc_spmCanIPC(struct ipc_perm *pPerm, mode_t Mode);
     753
     754/**
    731755 * Marks the current process (if we have it around) as zombie
    732756 * or dead freeing all resources associated with it.
     
    841865 *
    842866 * @returns 0 on success.
    843  * @returns -1 and errno on failure.
     867 * @returns Negative error code (errno.h) on failure.
     868 *
    844869 * @param   pRegRec     Pointer to the exception handler registration record.
     870 * @param   ppSPMHdr    Where to store the pointer to the SPM header. Can be NULL.
     871 *
    845872 * @remark  Don't even think of calling this if you're not LIBC!
    846873 */
    847 int __libc_spmLock(__LIBC_PSPMXCPTREGREC pRegRec);
     874int __libc_spmLock(__LIBC_PSPMXCPTREGREC pRegRec, __LIBC_PSPMHEADER *ppSPMHdr);
    848875
    849876/**
     
    851878 *
    852879 * @returns 0 on success.
    853  * @returns -1 on and errno failure.
     880 * @returns Negative error code (errno.h) on failure.
     881 *
    854882 * @param   pRegRec     Pointer to the exception handler registration record.
     883 *
    855884 * @remark  Don't even think of calling this if you're not LIBC!
    856885 */
     
    859888/**
    860889 * Allocate memory from the LIBC shared memory.
     890 *
     891 * The SPM must be locked using __libc_spmLock() prior to calling this function!
    861892 *
    862893 * @returns Pointer to allocated memory on success.
    863894 * @returns NULL on failure.
     895 *
    864896 * @param   cbSize      Size of memory to allocate.
     897 *
    865898 * @remark  Don't think of calling this if you're not LIBC!
    866899 */
    867 void * __libc_spmAlloc(size_t cbSize);
    868 
    869 /**
    870  * Free memory allocated by __libc_SpmAlloc().
     900void * __libc_spmAllocLocked(size_t cbSize);
     901
     902/**
     903 * Free memory allocated by __libc_spmAllocLocked() or __libc_spmAlloc().
     904 *
     905 * The SPM must be locked using __libc_spmLock() prior to calling this function!
    871906 *
    872907 * @returns 0 on success.
    873908 * @returns -1 and errno on failure.
     909 *
    874910 * @param   pv      Pointer to memory block returned by __libc_SpmAlloc().
    875911 *                  NULL is allowed.
    876912 * @remark  Don't think of calling this if you're not LIBC!
    877913 */
     914int __libc_spmFreeLocked(void *pv);
     915
     916/**
     917 * Allocate memory from the LIBC shared memory.
     918 *
     919 * @returns Pointer to allocated memory on success.
     920 * @returns NULL on failure.
     921 *
     922 * @param   cbSize      Size of memory to allocate.
     923 *
     924 * @remark  Don't think of calling this if you're not LIBC!
     925 */
     926void * __libc_spmAlloc(size_t cbSize);
     927
     928/**
     929 * Free memory allocated by __libc_SpmAlloc().
     930 *
     931 * @returns 0 on success.
     932 * @returns -1 and errno on failure.
     933 *
     934 * @param   pv      Pointer to memory block returned by __libc_SpmAlloc().
     935 *                  NULL is allowed.
     936 *
     937 * @remark  Don't think of calling this if you're not LIBC!
     938 */
    878939int __libc_spmFree(void *pv);
    879940
    880 
    881 /**
    882  * Register TCPIP termination handler.
     941/**
     942 * Register termination handler.
    883943 *
    884944 * This is a manual way of by passing a.out's broken weak symbols.
    885  * @param   pfnTerm     Pointer to the termination function.
    886  */
    887 void    __libc_spmSocketRegTerm(void (*pfnTerm)(void));
     945 */
     946void __libc_spmRegTerm(void (*pfnTerm)(void));
    888947
    889948
  • trunk/src/emx/include/InnoTekLIBC/thread.h

    • Property cvs2svn:cvs-rev changed from 1.12 to 1.13
    r1983 r1984  
    7373    volatile int    fDone;
    7474} __LIBC_THREAD_SIGSUSPEND, *__LIBC_PTHREAD_SIGSUSPEND;
     75
     76
     77/**
     78 * Signal notification callback function.
     79 *
     80 * This is a notification which can be used to correct the state of
     81 * a system object before any user code is executed.
     82 *
     83 * The semaphore lock is hold and signals are all on hold, so be very careful with waitin
     84 * on other semphores and stuff like that. Crashing is totally forbidden. :-)
     85 *
     86 * @param   iSignalNo       The signal number.
     87 * @param   pvUser          The user argument.
     88 */
     89typedef void __LIBC_FNSIGCALLBACK(int iSignalNo, void *pvUser);
     90/** Pointer to a signal callback function. */
     91typedef __LIBC_FNSIGCALLBACK *__LIBC_PFNSIGCALLBACK;
    7592
    7693
     
    174191     * when ever a thread enters for processing a signal asynchronously. */
    175192    volatile unsigned long      ulSigLastTS;
    176 
     193    /** Callback on signal/exception. */
     194    __LIBC_PFNSIGCALLBACK       pfnSigCallback;
     195    /** User argument to signal/exception callback. */
     196    void                       *pvSigCallbackUser;
    177197
    178198    /** Thread status, chiefly used for the u member of the thread structure. */
Note: See TracChangeset for help on using the changeset viewer.