head 1.1; access; symbols OSSP_JS_1_6_20070208:1.1 OSSP_JS_1_6_20060820:1.1 OSSP_JS_1_6_20060803:1.1; locks; strict; comment @ * @; 1.1 date 2006.08.03.13.19.21; author rse; state Exp; branches; next ; commitid 9Bvk8Ze7oUq2ToHr; desc @@ 1.1 log @Add optional Dynamic Shared Object (DSO) support (see src/jsdso.[ch]). This comes in two flavors: 1. Provide two public C API functions... JSBool JS_DSOLoad (JSContext *cx, int *id, const char *filename); JSBool JS_DSOUnload (JSContext *cx, int id); ...as an ultra-thin wrapper around the POSIX dlopen(3) API. It especially mimics the BSD RTLD behaviour of calling pre-defined functions (mandatory "js_DSO_load" and optional "js_DSO_unload") inside the DSO after/before the dlopen/dlclose calls. This allows the DSOs to perform their init/shutdown actions. 2. Provide a small JavaScript global object "DSO" which binds the two public DSO C API functions into the JavaScript language as "DSO.load" and "DSO.unload". The "DSO" object can be created by the friend C API function js_InitDSOClass(). This function is used by the command-linne interface "js" by default. As a result the OSSP Mozilla JavaScript engine is now able to dynamically load C extensions similar to what other programming languages provide since a longer time. @ text @/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /* ATTENTION: This is an OSSP js extension to the Mozilla JavaScript engine. It was implemented by Ralf S. Engelschall for OSSP. */ #ifndef jsdso_h___ #define jsdso_h___ #if defined(OSSP) && defined(JS_HAS_DSO_OBJECT) && JS_HAS_DSO_OBJECT JS_BEGIN_EXTERN_C /* public API */ extern JSBool JS_DSOLoad (JSContext *cx, int *id, const char *filename); extern JSBool JS_DSOUnload (JSContext *cx, int id); /* friend API */ extern JSObject *js_InitDSOClass (JSContext *cx, JSObject *obj); JS_END_EXTERN_C #endif #endif /* jsdso_h___ */ @