diff options
author | Damjan Marion <damarion@cisco.com> | 2016-12-19 23:05:39 +0100 |
---|---|---|
committer | Damjan Marion <damarion@cisco.com> | 2016-12-28 12:25:14 +0100 |
commit | 7cd468a3d7dee7d6c92f69a0bb7061ae208ec727 (patch) | |
tree | 5de62f8dbd3a752f5a676ca600e43d2652d1ff1a /vlib/vlib/unix/plugin.h | |
parent | 696f1adec0df3b8f161862566dd9c86174302658 (diff) |
Reorganize source tree to use single autotools instance
Change-Id: I7b51f88292e057c6443b12224486f2d0c9f8ae23
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'vlib/vlib/unix/plugin.h')
-rw-r--r-- | vlib/vlib/unix/plugin.h | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/vlib/vlib/unix/plugin.h b/vlib/vlib/unix/plugin.h deleted file mode 100644 index c17053bd306..00000000000 --- a/vlib/vlib/unix/plugin.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * plugin.h: plugin handling - * - * Copyright (c) 2011 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __included_plugin_h__ -#define __included_plugin_h__ - -#include <vlib/vlib.h> -#include <vlib/unix/unix.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> - -/* - * vlib plugin scheme - * - * Almost anything which can be made to work in a vlib unix - * application will also work in a vlib plugin. - * - * The elf-section magic which registers static objects - * works so long as plugins are preset when the vlib unix process - * starts. But wait: there's more... - * - * If an application calls vlib_load_new_plugins() -- possibly after - * changing vlib_plugin_main.plugin_path / vlib_plugin_main.plugin_name_filter, - * -- new plugins will be loaded. That, in turn, allows considerable - * flexibility in terms of adding feature code or fixing bugs without - * requiring the data-plane process to restart. - * - * When the plugin mechanism loads a plugin, it uses dlsym to locate - * and call the plugin's function vlib_plugin_register() if it exists. - * A plugin which expects to be loaded after the vlib application - * starts uses this callback to modify the application. If vlib_plugin_register - * returns non-zero, the plugin mechanism dlclose()'s the plugin. - * - * Applications control the plugin search path and name filter by - * declaring the variables vlib_plugin_path and vlib_plugin_name_filter. - * libvlib_unix.la supplies weak references for these symbols which - * effectively disable the scheme. In order for the elf-section magic to - * work, static plugins must be loaded at the earliest possible moment. - * - * An application can change these parameters at any time and call - * vlib_load_new_plugins(). - */ - - - -typedef struct -{ - u8 *name; - struct stat file_info; - void *handle; -} plugin_info_t; - -typedef struct -{ - /* loaded plugin info */ - plugin_info_t *plugin_info; - uword *plugin_by_name_hash; - - /* path and name filter */ - u8 *plugin_path; - u8 *plugin_name_filter; - - /* handoff structure get callback */ - void *handoff_structure_get_cb; - - /* usual */ - vlib_main_t *vlib_main; -} plugin_main_t; - -extern plugin_main_t vlib_plugin_main; - -int vlib_plugin_early_init (vlib_main_t * vm); -int vlib_load_new_plugins (plugin_main_t * pm, int from_early_init); - -#endif /* __included_plugin_h__ */ - -/* - * fd.io coding-style-patch-verification: ON - * - * Local Variables: - * eval: (c-set-style "gnu") - * End: - */ |