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>