2 #ifndef GLOBUS_XIO_LOAD_INCLUDE
3 #define GLOBUS_XIO_LOAD_INCLUDE
5 #include "globus_xio_types.h"
6 #include "globus_common.h"
12 extern globus_extension_registry_t globus_i_xio_driver_registry;
13 #define GLOBUS_XIO_DRIVER_REGISTRY &globus_i_xio_driver_registry
17 (*globus_xio_driver_init_t)(
18 globus_xio_driver_t * out_driver);
22 (*globus_xio_driver_destroy_t)(
23 globus_xio_driver_t driver);
28 globus_xio_driver_init_t init;
29 globus_xio_driver_destroy_t destroy;
30 } globus_xio_driver_hook_t;
33 globus_xio_driver_load(
34 const char * driver_name,
35 globus_xio_driver_t * out_driver);
38 globus_xio_driver_unload(
39 globus_xio_driver_t driver);
50 #define GlobusXIODefineDriver(driver_name, init_func, destroy_func) \
51 globus_xio_driver_hook_t globus_i_xio_##driver_name##_hook = \
57 #define GlobusXIODeclareDriver(driver_name) \
58 extern globus_xio_driver_hook_t globus_i_xio_##driver_name##_hook
59 #define GlobusXIOMyDriver(driver_name) \
60 &globus_i_xio_##driver_name##_hook
68 #define GlobusXIORegisterDriver(driver_name) \
69 globus_extension_registry_add( \
70 GLOBUS_XIO_DRIVER_REGISTRY, \
71 (void *)#driver_name, \
72 GlobusXIOMyModule(driver_name), \
73 GlobusXIOMyDriver(driver_name))
74 #define GlobusXIOUnRegisterDriver(driver_name) \
75 globus_extension_registry_remove( \
76 GLOBUS_XIO_DRIVER_REGISTRY, \
79 #define GlobusXIODefineModule(driver_name) \
80 GlobusExtensionDefineModule(globus_xio_##driver_name##_driver)
81 #define GlobusXIODeclareModule(driver_name) \
82 GlobusExtensionDeclareModule(globus_xio_##driver_name##_driver)
83 #define GlobusXIOMyModule(driver_name) \
84 GlobusExtensionMyModule(globus_xio_##driver_name##_driver)
85 #define GlobusXIOExtensionName(driver_name) \
86 "globus_xio_" #driver_name "_driver"
88 #define GLOBUS_XIO_EXTENSION_FORMAT "globus_xio_%s_driver"
92 globus_i_xio_load_init(
void);
95 globus_i_xio_load_destroy(
void);