jaulib v1.3.0
Jau Support Library (C++, Java, ..)
UnixDynamicLinkerImpl.java
Go to the documentation of this file.
1/**
2 * Author: Sven Gothel <sgothel@jausoft.com>
3 * Copyright (c) 2021 Gothel Software e.K.
4 * Copyright (c) 2013 Gothel Software e.K.
5 * Copyright (c) 2013 JogAmp Community.
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining
8 * a copy of this software and associated documentation files (the
9 * "Software"), to deal in the Software without restriction, including
10 * without limitation the rights to use, copy, modify, merge, publish,
11 * distribute, sublicense, and/or sell copies of the Software, and to
12 * permit persons to whom the Software is furnished to do so, subject to
13 * the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be
16 * included in all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 */
26package jau.sys.dl;
27
28/* pp */ abstract class UnixDynamicLinkerImpl extends DynamicLinkerImpl {
29
30 //
31 // Package private scope of class w/ protected native code access
32 // and sealed jogamp.common.* package definition
33 // ensuring no abuse via subclassing.
34 //
35
36 /** Interface to C language function: <br> <code> int dlclose(void * ); </code> */
37 protected static native int dlclose(long arg0);
38
39 /** Interface to C language function: <br> <code> char * dlerror(void); </code> */
40 protected static native java.lang.String dlerror();
41
42 /** Interface to C language function: <br> <code> void * dlopen(const char * , int); </code> */
43 protected static native long dlopen(java.lang.String arg0, int arg1);
44
45 /** Interface to C language function: <br> <code> void * dlsym(void * , const char * ); </code> */
46 protected static native long dlsym(long arg0, java.lang.String arg1);
47
48 @Override
49 protected final long lookupSymbolLocalImpl(final long libraryHandle, final String symbolName) throws SecurityException {
50 return 0 != libraryHandle ? dlsym(libraryHandle, symbolName) : 0;
51 }
52
53 @Override
54 protected final void closeLibraryImpl(final long libraryHandle) throws SecurityException {
55 if( 0 != libraryHandle ) {
56 dlclose(libraryHandle);
57 }
58 }
59
60 @Override
61 public final String getLastError() {
62 return dlerror();
63 }
64}