2
+ − 1
/*
+ − 2
* Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
+ − 3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ − 4
*
+ − 5
* This code is free software; you can redistribute it and/or modify it
+ − 6
* under the terms of the GNU General Public License version 2 only, as
+ − 7
* published by the Free Software Foundation. Sun designates this
+ − 8
* particular file as subject to the "Classpath" exception as provided
+ − 9
* by Sun in the LICENSE file that accompanied this code.
+ − 10
*
+ − 11
* This code is distributed in the hope that it will be useful, but WITHOUT
+ − 12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ − 13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ − 14
* version 2 for more details (a copy is included in the LICENSE file that
+ − 15
* accompanied this code).
+ − 16
*
+ − 17
* You should have received a copy of the GNU General Public License version
+ − 18
* 2 along with this work; if not, write to the Free Software Foundation,
+ − 19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ − 20
*
+ − 21
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ − 22
* CA 95054 USA or visit www.sun.com if you need additional information or
+ − 23
* have any questions.
+ − 24
*/
+ − 25
+ − 26
/* Native Platform Toolkit */
+ − 27
+ − 28
#ifndef _NPT_MD_H
+ − 29
#define _NPT_MD_H
+ − 30
+ − 31
#include <stdio.h>
+ − 32
#include <string.h>
+ − 33
#include <errno.h>
+ − 34
#include <dlfcn.h>
+ − 35
#include <link.h>
+ − 36
+ − 37
#define NPT_LIBNAME "libnpt.so"
+ − 38
+ − 39
#define NPT_INITIALIZE(pnpt,version,options) \
+ − 40
{ \
+ − 41
void *_handle; \
+ − 42
void *_sym; \
+ − 43
\
+ − 44
if ( (pnpt) == NULL ) NPT_ERROR("NptEnv* is NULL"); \
+ − 45
*(pnpt) = NULL; \
+ − 46
_handle = dlopen(NPT_LIBNAME, RTLD_LAZY); \
+ − 47
if ( _handle == NULL ) NPT_ERROR("Cannot open library"); \
+ − 48
_sym = dlsym(_handle, "nptInitialize"); \
+ − 49
if ( _sym == NULL ) NPT_ERROR("Cannot find nptInitialize"); \
+ − 50
((NptInitialize)_sym)((pnpt), version, (options)); \
+ − 51
if ( (*(pnpt)) == NULL ) NPT_ERROR("Cannot initialize NptEnv"); \
+ − 52
(*(pnpt))->libhandle = _handle; \
+ − 53
}
+ − 54
+ − 55
#define NPT_TERMINATE(npt,options) \
+ − 56
{ \
+ − 57
void *_handle; \
+ − 58
void *_sym; \
+ − 59
\
+ − 60
if ( (npt) == NULL ) NPT_ERROR("NptEnv* is NULL"); \
+ − 61
_handle = (npt)->libhandle; \
+ − 62
_sym = dlsym(_handle, "nptTerminate"); \
+ − 63
if ( _sym == NULL ) NPT_ERROR("Cannot find nptTerminate"); \
+ − 64
((NptTerminate)_sym)((npt), (options)); \
+ − 65
if ( _handle != NULL ) (void)dlclose(_handle); \
+ − 66
}
+ − 67
+ − 68
+ − 69
#endif