[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT/LIBP11-KIT v2 1/4] Add information files and patches
The Readme contains all the additional manual steps that must be done to succesfully run the library within Unikraft. The patches fix compilation errors caused by pthread-embedded compatibility issues with lpthread. Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> --- .gitignore | 27 +++ CODING_STYLE.md | 4 + CONTRIBUTING.md | 4 + COPYING.md | 39 ++++ MAINTAINERS.md | 11 + README.md | 17 ++ ...-instead-of-structure-for-deprecated.patch | 47 ++++ ...ter-instead-of-structure-for-modules.patch | 44 ++++ ...-instead-of-structure-for-deprecated.patch | 47 ++++ patches/0004-Add-default-config-format.patch | 108 +++++++++ ...eader-file-generated-by-native-build.patch | 218 ++++++++++++++++++ 11 files changed, 566 insertions(+) create mode 100644 .gitignore create mode 100644 CODING_STYLE.md create mode 100644 CONTRIBUTING.md create mode 100644 COPYING.md create mode 100644 MAINTAINERS.md create mode 100644 README.md create mode 100644 patches/0001-Use-pointer-instead-of-structure-for-deprecated.patch create mode 100644 patches/0002-Use-pointer-instead-of-structure-for-modules.patch create mode 100644 patches/0003-Use-pointer-instead-of-structure-for-deprecated.patch create mode 100644 patches/0004-Add-default-config-format.patch create mode 100644 patches/0005-Add-missing-header-file-generated-by-native-build.patch diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..75d2fd3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +*.depend +*.o +*.a +*.d +*.so +*.orig +*.rej +*.bak +*.swp +*~ +,* +\#*\# +.\#* +\#_*\# +.\#_* +!.gitignore +.* + +# gnu global files +GPATH +GRTAGS +GSYMS +GTAGS + +# cscope files +cscope.* +ncscope.* diff --git a/CODING_STYLE.md b/CODING_STYLE.md new file mode 100644 index 0000000..5730041 --- /dev/null +++ b/CODING_STYLE.md @@ -0,0 +1,4 @@ +Coding Style +============ + +Please refer to the `CODING_STYLE.md` file in the main Unikraft repository. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..14f6ac6 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,4 @@ +Contributing to Unikraft +======================== + +Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository. diff --git a/COPYING.md b/COPYING.md new file mode 100644 index 0000000..44fc1bd --- /dev/null +++ b/COPYING.md @@ -0,0 +1,39 @@ +License +======= + +Unikraft p11-kit wrappers +---------------------------------- + +This repository contains wrapper code to build p11-kit with Unikraft. +Each C code file in this repository should declare who is the +copyright owner and under which terms and conditions the code is +licensed. If such a licence note is missing, the following copyright +notice will apply: + + Copyright (c) 2020, University Politehnica of Bucharest. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + diff --git a/MAINTAINERS.md b/MAINTAINERS.md new file mode 100644 index 0000000..9c5d8d1 --- /dev/null +++ b/MAINTAINERS.md @@ -0,0 +1,11 @@ +Maintainers List +================ + +For notes on how to read this information, please refer to `MAINTAINERS.md` in +the main Unikraft repository. + + LIBP11-KIT-UNIKRAFT + M: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> + M: Felipe Huici <felipe.huici@xxxxxxxxx> + L: minios-devel@xxxxxxxxxxxxx + F: * diff --git a/README.md b/README.md new file mode 100644 index 0000000..bd5d1aa --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +p11-kit for Unikraft +============================= + +This is the port of p11-kit for Unikraft as an external library. It +depends on the following libraries that need to be added to `Makefile` +in this order: + +* networking, e.g `lwip` +* multi-threading, e.g `pthread-embedded` +* libc, e.g `newlib` + +The library is compatible with KVM and, possibly, Linuxu. + +For the library to work, `ppoll` must be disabled in `lwip`. + +Please refer to the `README.md` as well as the documentation in the `doc/` +subdirectory of the main unikraft repository. diff --git a/patches/0001-Use-pointer-instead-of-structure-for-deprecated.patch b/patches/0001-Use-pointer-instead-of-structure-for-deprecated.patch new file mode 100644 index 0000000..3b65165 --- /dev/null +++ b/patches/0001-Use-pointer-instead-of-structure-for-deprecated.patch @@ -0,0 +1,47 @@ +From 1d0288e94d311674339c7b6b54a402539da471d0 Mon Sep 17 00:00:00 2001 +From: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> +Date: Fri, 6 Nov 2020 19:16:38 +0200 +Subject: [PATCH 1/5] Use pointer instead of structure for deprecated + +Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> +--- + p11-kit/test-init.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/p11-kit/test-init.c b/p11-kit/test-init.c +index 9cc691f..9e1926c 100644 +--- a/p11-kit/test-init.c ++++ b/p11-kit/test-init.c +@@ -253,25 +253,25 @@ test_threaded_initialization (void) + for (i = 0; i < num_threads; i++) { + ret = p11_thread_create (&threads[i], initialization_thread, data[i]); + assert_num_eq (0, ret); +- assert (threads[i] != 0); ++ assert (threads[i].p != 0); + } + + for (i = 0; i < num_threads; i++) { + ret = p11_thread_join (threads[i]); + assert_num_eq (0, ret); +- threads[i] = 0; ++ threads[i].p = 0; + } + + for (i = 0; i < num_threads; i++) { + ret = p11_thread_create (&threads[i], finalization_thread, data[i]); + assert_num_eq (0, ret); +- assert (threads[i] != 0); ++ assert (threads[i].p != 0); + } + + for (i = 0; i < num_threads; i++) { + ret = p11_thread_join (threads[i]); + assert_num_eq (0, ret); +- threads[i] = 0; ++ threads[i].p = 0; + } + + p11_lock (); +-- +2.20.1 + diff --git a/patches/0002-Use-pointer-instead-of-structure-for-modules.patch b/patches/0002-Use-pointer-instead-of-structure-for-modules.patch new file mode 100644 index 0000000..b5581c6 --- /dev/null +++ b/patches/0002-Use-pointer-instead-of-structure-for-modules.patch @@ -0,0 +1,44 @@ +From a0eaefae206f89212d2230e3a9228c5828f86c3c Mon Sep 17 00:00:00 2001 +From: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> +Date: Fri, 6 Nov 2020 19:17:01 +0200 +Subject: [PATCH 2/5] Use pointer instead of structure for modules + +Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> +--- + p11-kit/modules.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/p11-kit/modules.c b/p11-kit/modules.c +index 22f1740..784df4c 100644 +--- a/p11-kit/modules.c ++++ b/p11-kit/modules.c +@@ -294,7 +294,7 @@ free_module_unlocked (void *data) + p11_debug_precond ("module unloaded without C_Finalize having been " + "called for each C_Initialize"); + } else { +- assert (mod->initialize_thread == 0); ++ assert (mod->initialize_thread.p == 0); + } + + p11_virtual_uninit (&mod->virt); +@@ -712,7 +712,7 @@ initialize_module_inlock_reentrant (Module *mod, CK_C_INITIALIZE_ARGS *init_args + + self = p11_thread_id_self (); + +- if (mod->initialize_thread == self) { ++ if (mod->initialize_thread.p == self.p) { + p11_message ("p11-kit initialization called recursively"); + return CKR_FUNCTION_FAILED; + } +@@ -766,7 +766,7 @@ initialize_module_inlock_reentrant (Module *mod, CK_C_INITIALIZE_ARGS *init_args + } + + mod->ref_count--; +- mod->initialize_thread = 0; ++ mod->initialize_thread.p = 0; + return rv; + } + +-- +2.20.1 + diff --git a/patches/0003-Use-pointer-instead-of-structure-for-deprecated.patch b/patches/0003-Use-pointer-instead-of-structure-for-deprecated.patch new file mode 100644 index 0000000..55acc1d --- /dev/null +++ b/patches/0003-Use-pointer-instead-of-structure-for-deprecated.patch @@ -0,0 +1,47 @@ +From 05b93ce82cf0c07dec1f0df398e8325385f49635 Mon Sep 17 00:00:00 2001 +From: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> +Date: Fri, 6 Nov 2020 19:17:29 +0200 +Subject: [PATCH 3/5] Use pointer instead of structure for deprecated + +Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> +--- + p11-kit/test-deprecated.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/p11-kit/test-deprecated.c b/p11-kit/test-deprecated.c +index 81d6029..49761e9 100644 +--- a/p11-kit/test-deprecated.c ++++ b/p11-kit/test-deprecated.c +@@ -384,25 +384,25 @@ test_threaded_initialization (void) + for (i = 0; i < num_threads; i++) { + ret = p11_thread_create (&threads[i], initialization_thread, "thread-data"); + assert_num_eq (0, ret); +- assert (threads[i] != 0); ++ assert (threads[i].p != 0); + } + + for (i = 0; i < num_threads; i++) { + ret = p11_thread_join (threads[i]); + assert_num_eq (0, ret); +- threads[i] = 0; ++ threads[i].p = 0; + } + + for (i = 0; i < num_threads; i++) { + ret = p11_thread_create (&threads[i], finalization_thread, "thread-data"); + assert_num_eq (0, ret); +- assert (threads[i] != 0); ++ assert (threads[i].p != 0); + } + + for (i = 0; i < num_threads; i++) { + ret = p11_thread_join (threads[i]); + assert_num_eq (0, ret); +- threads[i] = 0; ++ threads[i].p = 0; + } + + /* C_Initialize should have been called exactly once */ +-- +2.20.1 + diff --git a/patches/0004-Add-default-config-format.patch b/patches/0004-Add-default-config-format.patch new file mode 100644 index 0000000..6ba49e1 --- /dev/null +++ b/patches/0004-Add-default-config-format.patch @@ -0,0 +1,108 @@ +From 065d32fef6cb0dcf0d98562adbadef2d5be2cec8 Mon Sep 17 00:00:00 2001 +From: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> +Date: Fri, 6 Nov 2020 19:50:12 +0200 +Subject: [PATCH 4/5] Add default config format + +Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> +--- + _build/config.h | 88 +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 88 insertions(+) + create mode 100644 _build/config.h + +diff --git a/_build/config.h b/_build/config.h +new file mode 100644 +index 0000000..430b902 +--- /dev/null ++++ b/_build/config.h +@@ -0,0 +1,88 @@ ++/* ++ * Autogenerated by the Meson build system. ++ * Do not edit, your changes will be lost. ++ */ ++ ++#pragma once ++ ++#define EXEEXT "" ++ ++#define HAVE_ASPRINTF 1 ++ ++#define HAVE_BASENAME 1 ++ ++#define HAVE_DECL_ASPRINTF 1 ++ ++#define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME 1 ++ ++#define HAVE_DECL_REALLOCARRAY 1 ++ ++#define HAVE_DECL_VASPRINTF 1 ++ ++#define HAVE_GETAUXVAL 1 ++ ++#define HAVE_GETRESUID 1 ++ ++#define HAVE_GMTIME_R 1 ++ ++#define HAVE_LOCALE_H 1 ++ ++#define HAVE_LOCALE_T 1 ++ ++#define HAVE_MKDTEMP 1 ++ ++#define HAVE_MKSTEMP 1 ++ ++#define HAVE_NEWLOCALE 1 ++ ++#define HAVE_PROGRAM_INVOCATION_SHORT_NAME 1 ++ ++#define HAVE_REALLOCARRAY 1 ++ ++#define HAVE_SECURE_GETENV 1 ++ ++#define HAVE_SETENV 1 ++ ++#define HAVE_SIG_T 1 ++ ++#define HAVE_STDBOOL_H 1 ++ ++#define HAVE_STRERROR_L 1 ++ ++#define HAVE_STRERROR_R 1 ++ ++#define HAVE_STRNDUP 1 ++ ++#define HAVE_STRUCT_DIRENT_D_TYPE 1 ++ ++#define HAVE_SYS_RESOURCE_H 1 ++ ++#define HAVE_VASPRINTF 1 ++ ++ ++ ++#define HAVE___LIBC_ENABLE_SECURE 1 ++ ++#define HAVE___SIGHANDLER_T 1 ++ ++#define OS_UNIX 1 ++ ++#define P11_TLS_KEYWORD _Thread_local ++ ++#define P11_VIRTUAL_MAX_FIXED 64 ++ ++#define PACKAGE_MAJOR 0 ++ ++#define PACKAGE_MINOR 23 ++ ++#define SHLEXT ".so" ++ ++#define SIZEOF_UNSIGNED_LONG 8 ++ ++#define TRUST_PATHS "" ++ ++#define WITH_DEBUG 1 ++ ++#define WITH_STRICT 0 ++ ++#define _DEBUG 1 +-- +2.20.1 + diff --git a/patches/0005-Add-missing-header-file-generated-by-native-build.patch b/patches/0005-Add-missing-header-file-generated-by-native-build.patch new file mode 100644 index 0000000..c2f0ec8 --- /dev/null +++ b/patches/0005-Add-missing-header-file-generated-by-native-build.patch @@ -0,0 +1,218 @@ +From 9336af4715cc1b57466499bf0cba20a2447b2d70 Mon Sep 17 00:00:00 2001 +From: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> +Date: Fri, 6 Nov 2020 21:23:28 +0200 +Subject: [PATCH 5/5] Add missing header file generated by native build + +Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@xxxxxxxxx> +--- + _build/p11-kit/virtual-fixed-generated.h | 198 +++++++++++++++++++++++ + 1 file changed, 198 insertions(+) + create mode 100644 _build/p11-kit/virtual-fixed-generated.h + +diff --git a/_build/p11-kit/virtual-fixed-generated.h b/_build/p11-kit/virtual-fixed-generated.h +new file mode 100644 +index 0000000..d4c81de +--- /dev/null ++++ b/_build/p11-kit/virtual-fixed-generated.h +@@ -0,0 +1,198 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++ ++P11_VIRTUAL_FIXED_FUNCTIONS(0) ++P11_VIRTUAL_FIXED_FUNCTIONS(1) ++P11_VIRTUAL_FIXED_FUNCTIONS(2) ++P11_VIRTUAL_FIXED_FUNCTIONS(3) ++P11_VIRTUAL_FIXED_FUNCTIONS(4) ++P11_VIRTUAL_FIXED_FUNCTIONS(5) ++P11_VIRTUAL_FIXED_FUNCTIONS(6) ++P11_VIRTUAL_FIXED_FUNCTIONS(7) ++P11_VIRTUAL_FIXED_FUNCTIONS(8) ++P11_VIRTUAL_FIXED_FUNCTIONS(9) ++P11_VIRTUAL_FIXED_FUNCTIONS(10) ++P11_VIRTUAL_FIXED_FUNCTIONS(11) ++P11_VIRTUAL_FIXED_FUNCTIONS(12) ++P11_VIRTUAL_FIXED_FUNCTIONS(13) ++P11_VIRTUAL_FIXED_FUNCTIONS(14) ++P11_VIRTUAL_FIXED_FUNCTIONS(15) ++P11_VIRTUAL_FIXED_FUNCTIONS(16) ++P11_VIRTUAL_FIXED_FUNCTIONS(17) ++P11_VIRTUAL_FIXED_FUNCTIONS(18) ++P11_VIRTUAL_FIXED_FUNCTIONS(19) ++P11_VIRTUAL_FIXED_FUNCTIONS(20) ++P11_VIRTUAL_FIXED_FUNCTIONS(21) ++P11_VIRTUAL_FIXED_FUNCTIONS(22) ++P11_VIRTUAL_FIXED_FUNCTIONS(23) ++P11_VIRTUAL_FIXED_FUNCTIONS(24) ++P11_VIRTUAL_FIXED_FUNCTIONS(25) ++P11_VIRTUAL_FIXED_FUNCTIONS(26) ++P11_VIRTUAL_FIXED_FUNCTIONS(27) ++P11_VIRTUAL_FIXED_FUNCTIONS(28) ++P11_VIRTUAL_FIXED_FUNCTIONS(29) ++P11_VIRTUAL_FIXED_FUNCTIONS(30) ++P11_VIRTUAL_FIXED_FUNCTIONS(31) ++P11_VIRTUAL_FIXED_FUNCTIONS(32) ++P11_VIRTUAL_FIXED_FUNCTIONS(33) ++P11_VIRTUAL_FIXED_FUNCTIONS(34) ++P11_VIRTUAL_FIXED_FUNCTIONS(35) ++P11_VIRTUAL_FIXED_FUNCTIONS(36) ++P11_VIRTUAL_FIXED_FUNCTIONS(37) ++P11_VIRTUAL_FIXED_FUNCTIONS(38) ++P11_VIRTUAL_FIXED_FUNCTIONS(39) ++P11_VIRTUAL_FIXED_FUNCTIONS(40) ++P11_VIRTUAL_FIXED_FUNCTIONS(41) ++P11_VIRTUAL_FIXED_FUNCTIONS(42) ++P11_VIRTUAL_FIXED_FUNCTIONS(43) ++P11_VIRTUAL_FIXED_FUNCTIONS(44) ++P11_VIRTUAL_FIXED_FUNCTIONS(45) ++P11_VIRTUAL_FIXED_FUNCTIONS(46) ++P11_VIRTUAL_FIXED_FUNCTIONS(47) ++P11_VIRTUAL_FIXED_FUNCTIONS(48) ++P11_VIRTUAL_FIXED_FUNCTIONS(49) ++P11_VIRTUAL_FIXED_FUNCTIONS(50) ++P11_VIRTUAL_FIXED_FUNCTIONS(51) ++P11_VIRTUAL_FIXED_FUNCTIONS(52) ++P11_VIRTUAL_FIXED_FUNCTIONS(53) ++P11_VIRTUAL_FIXED_FUNCTIONS(54) ++P11_VIRTUAL_FIXED_FUNCTIONS(55) ++P11_VIRTUAL_FIXED_FUNCTIONS(56) ++P11_VIRTUAL_FIXED_FUNCTIONS(57) ++P11_VIRTUAL_FIXED_FUNCTIONS(58) ++P11_VIRTUAL_FIXED_FUNCTIONS(59) ++P11_VIRTUAL_FIXED_FUNCTIONS(60) ++P11_VIRTUAL_FIXED_FUNCTIONS(61) ++P11_VIRTUAL_FIXED_FUNCTIONS(62) ++P11_VIRTUAL_FIXED_FUNCTIONS(63) ++ ++CK_FUNCTION_LIST p11_virtual_fixed[P11_VIRTUAL_MAX_FIXED] = { ++ P11_VIRTUAL_FIXED_INITIALIZER(0), ++ P11_VIRTUAL_FIXED_INITIALIZER(1), ++ P11_VIRTUAL_FIXED_INITIALIZER(2), ++ P11_VIRTUAL_FIXED_INITIALIZER(3), ++ P11_VIRTUAL_FIXED_INITIALIZER(4), ++ P11_VIRTUAL_FIXED_INITIALIZER(5), ++ P11_VIRTUAL_FIXED_INITIALIZER(6), ++ P11_VIRTUAL_FIXED_INITIALIZER(7), ++ P11_VIRTUAL_FIXED_INITIALIZER(8), ++ P11_VIRTUAL_FIXED_INITIALIZER(9), ++ P11_VIRTUAL_FIXED_INITIALIZER(10), ++ P11_VIRTUAL_FIXED_INITIALIZER(11), ++ P11_VIRTUAL_FIXED_INITIALIZER(12), ++ P11_VIRTUAL_FIXED_INITIALIZER(13), ++ P11_VIRTUAL_FIXED_INITIALIZER(14), ++ P11_VIRTUAL_FIXED_INITIALIZER(15), ++ P11_VIRTUAL_FIXED_INITIALIZER(16), ++ P11_VIRTUAL_FIXED_INITIALIZER(17), ++ P11_VIRTUAL_FIXED_INITIALIZER(18), ++ P11_VIRTUAL_FIXED_INITIALIZER(19), ++ P11_VIRTUAL_FIXED_INITIALIZER(20), ++ P11_VIRTUAL_FIXED_INITIALIZER(21), ++ P11_VIRTUAL_FIXED_INITIALIZER(22), ++ P11_VIRTUAL_FIXED_INITIALIZER(23), ++ P11_VIRTUAL_FIXED_INITIALIZER(24), ++ P11_VIRTUAL_FIXED_INITIALIZER(25), ++ P11_VIRTUAL_FIXED_INITIALIZER(26), ++ P11_VIRTUAL_FIXED_INITIALIZER(27), ++ P11_VIRTUAL_FIXED_INITIALIZER(28), ++ P11_VIRTUAL_FIXED_INITIALIZER(29), ++ P11_VIRTUAL_FIXED_INITIALIZER(30), ++ P11_VIRTUAL_FIXED_INITIALIZER(31), ++ P11_VIRTUAL_FIXED_INITIALIZER(32), ++ P11_VIRTUAL_FIXED_INITIALIZER(33), ++ P11_VIRTUAL_FIXED_INITIALIZER(34), ++ P11_VIRTUAL_FIXED_INITIALIZER(35), ++ P11_VIRTUAL_FIXED_INITIALIZER(36), ++ P11_VIRTUAL_FIXED_INITIALIZER(37), ++ P11_VIRTUAL_FIXED_INITIALIZER(38), ++ P11_VIRTUAL_FIXED_INITIALIZER(39), ++ P11_VIRTUAL_FIXED_INITIALIZER(40), ++ P11_VIRTUAL_FIXED_INITIALIZER(41), ++ P11_VIRTUAL_FIXED_INITIALIZER(42), ++ P11_VIRTUAL_FIXED_INITIALIZER(43), ++ P11_VIRTUAL_FIXED_INITIALIZER(44), ++ P11_VIRTUAL_FIXED_INITIALIZER(45), ++ P11_VIRTUAL_FIXED_INITIALIZER(46), ++ P11_VIRTUAL_FIXED_INITIALIZER(47), ++ P11_VIRTUAL_FIXED_INITIALIZER(48), ++ P11_VIRTUAL_FIXED_INITIALIZER(49), ++ P11_VIRTUAL_FIXED_INITIALIZER(50), ++ P11_VIRTUAL_FIXED_INITIALIZER(51), ++ P11_VIRTUAL_FIXED_INITIALIZER(52), ++ P11_VIRTUAL_FIXED_INITIALIZER(53), ++ P11_VIRTUAL_FIXED_INITIALIZER(54), ++ P11_VIRTUAL_FIXED_INITIALIZER(55), ++ P11_VIRTUAL_FIXED_INITIALIZER(56), ++ P11_VIRTUAL_FIXED_INITIALIZER(57), ++ P11_VIRTUAL_FIXED_INITIALIZER(58), ++ P11_VIRTUAL_FIXED_INITIALIZER(59), ++ P11_VIRTUAL_FIXED_INITIALIZER(60), ++ P11_VIRTUAL_FIXED_INITIALIZER(61), ++ P11_VIRTUAL_FIXED_INITIALIZER(62), ++ P11_VIRTUAL_FIXED_INITIALIZER(63), ++}; ++ ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(0) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(1) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(2) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(3) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(4) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(5) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(6) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(7) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(8) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(9) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(10) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(11) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(12) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(13) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(14) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(15) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(16) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(17) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(18) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(19) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(20) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(21) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(22) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(23) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(24) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(25) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(26) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(27) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(28) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(29) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(30) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(31) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(32) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(33) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(34) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(35) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(36) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(37) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(38) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(39) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(40) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(41) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(42) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(43) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(44) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(45) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(46) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(47) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(48) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(49) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(50) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(51) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(52) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(53) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(54) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(55) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(56) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(57) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(58) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(59) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(60) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(61) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(62) ++P11_VIRTUAL_FIXED_GET_FUNCTION_LIST(63) +-- +2.20.1 + -- 2.20.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |