Annotation of embedaddon/php/netware/start.c, revision 1.1

1.1     ! misho       1: /*
        !             2:    +----------------------------------------------------------------------+
        !             3:    | PHP Version 5                                                        |
        !             4:    +----------------------------------------------------------------------+
        !             5:    | Copyright (c) 1997-2010 The PHP Group                                |
        !             6:    +----------------------------------------------------------------------+
        !             7:    | This source file is subject to version 3.01 of the PHP license,      |
        !             8:    | that is bundled with this package in the file LICENSE, and is        |
        !             9:    | available through the world-wide-web at the following url:           |
        !            10:    | http://www.php.net/license/3_01.txt                                  |
        !            11:    | If you did not receive a copy of the PHP license and are unable to   |
        !            12:    | obtain it through the world-wide-web, please send a note to          |
        !            13:    | license@php.net so we can mail you a copy immediately.               |
        !            14:    +----------------------------------------------------------------------+
        !            15:    | Author: Novell, Inc.                                                 |
        !            16:    +----------------------------------------------------------------------+
        !            17:  */
        !            18: 
        !            19: 
        !            20: #include <library.h>
        !            21: #include <netware.h>
        !            22: #include <nks/synch.h>
        !            23: 
        !            24: void           *gLibHandle = (void *) NULL;
        !            25: rtag_t         gAllocTag = (rtag_t) NULL;
        !            26: NXMutex_t      *gLibLock = (NXMutex_t *) NULL;
        !            27: int                    gLibId = 0;
        !            28: 
        !            29: 
        !            30: int DisposeLibraryData(        void    *data)
        !            31: {
        !            32:        return 0;
        !            33: }
        !            34: 
        !            35: 
        !            36: int _NonAppStart
        !            37: (
        !            38:        void                    *NLMHandle,
        !            39:        void                    *errorScreen,
        !            40:        const char      *cmdLine,
        !            41:        const char      *loadDirPath,
        !            42:        size_t          uninitializedDataLength,
        !            43:        void                    *NLMFileHandle,
        !            44:        int                     (*readRoutineP)( int conn, void *fileHandle, size_t offset,
        !            45:                                                                size_t nbytes, size_t *bytesRead, void *buffer ),
        !            46:        size_t          customDataOffset,
        !            47:        size_t          customDataSize,
        !            48:        int                     messageCount,
        !            49:        const char      **messages
        !            50: )
        !            51: {
        !            52:        NX_LOCK_INFO_ALLOC(liblock, "Per-Application Data Lock", 0);
        !            53: 
        !            54: #pragma unused(cmdLine)
        !            55: #pragma unused(loadDirPath)
        !            56: #pragma unused(uninitializedDataLength)
        !            57: #pragma unused(NLMFileHandle)
        !            58: #pragma unused(readRoutineP)
        !            59: #pragma unused(customDataOffset)
        !            60: #pragma unused(customDataSize)
        !            61: #pragma unused(messageCount)
        !            62: #pragma unused(messages)
        !            63: 
        !            64: /* Here we process our command line, post errors (to the error screen),
        !            65:  * perform initializations and anything else we need to do before being able
        !            66:  * to accept calls into us. If we succeed, we return non-zero and the NetWare
        !            67:  * Loader will leave us up, otherwise we fail to load and get dumped.
        !            68:  */
        !            69: /**
        !            70:        gAllocTag = AllocateResourceTag(NLMHandle,
        !            71:                                                                "<library-name> memory allocations", AllocSignature);
        !            72:        if (!gAllocTag) {
        !            73:                OutputToScreen(errorScreen, "Unable to allocate resource tag for "
        !            74:                                                                                        "library memory allocations.\n");
        !            75:                return -1;
        !            76:        }
        !            77: **/
        !            78:        gLibId = register_library(DisposeLibraryData);
        !            79:        if (gLibId == -1) {
        !            80:                OutputToScreen(errorScreen, "Unable to register library with kernel.\n");
        !            81:                return -1;
        !            82:        }
        !            83: 
        !            84:        gLibHandle = NLMHandle;
        !            85: 
        !            86:        gLibLock = NXMutexAlloc(0, 0, &liblock);
        !            87:        if (!gLibLock) {
        !            88:                OutputToScreen(errorScreen, "Unable to allocate library data lock.\n");
        !            89:                return -1;
        !            90:        }
        !            91: 
        !            92:        return 0;
        !            93: }
        !            94: 
        !            95: 
        !            96: void _NonAppStop( void )
        !            97: {
        !            98: /* Here we clean up any resources we allocated. Resource tags is a big part
        !            99:  * of what we created, but NetWare doesn't ask us to free those.
        !           100:  */
        !           101:        (void) unregister_library(gLibId);
        !           102:        NXMutexFree(gLibLock);
        !           103: }
        !           104: 
        !           105: 
        !           106: int  _NonAppCheckUnload( void )
        !           107: {
        !           108: /* This function cannot be the first in the file for if the file is linked
        !           109:  * first, then the check-unload function's offset will be nlmname.nlm+0
        !           110:  * which is how to tell that there isn't one. When the check function is
        !           111:  * first in the linked objects, it is ambiguous. For this reason, we will
        !           112:  * put it inside this file after the stop function.
        !           113:  *
        !           114:  * Here we check to see if it's alright to ourselves to be unloaded. If not,
        !           115:  * we return a non-zero value. Right now, there isn't any reason not to allow
        !           116:  * it.
        !           117:  */
        !           118:        return 0;
        !           119: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>