X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=linux_module%2Flinux-exts.h;h=a6b7301e2c7f4cb2d83f7253dc06a9bc259e0f8d;hb=28cd2d6deca639fe40256c4d3f2c8f9491ec777a;hp=72e480004862eb96b3db1ddf1fd9b229c125194b;hpb=fed3449f4fd2fab7f27a17e0970e954bd2d69abc;p=palacios.git diff --git a/linux_module/linux-exts.h b/linux_module/linux-exts.h index 72e4800..a6b7301 100644 --- a/linux_module/linux-exts.h +++ b/linux_module/linux-exts.h @@ -1,9 +1,7 @@ #include "palacios.h" -int add_mod_cmd(struct v3_guest * guest, unsigned int cmd, - int (*handler)(struct v3_guest * guest, - unsigned int cmd, unsigned long arg)); + struct linux_ext { @@ -12,18 +10,39 @@ struct linux_ext { int (*deinit)( void ); int (*guest_init)(struct v3_guest * guest, void ** priv_data); int (*guest_deinit)(struct v3_guest * guest, void * priv_data); -} __attribute__((packed)); +}; int init_lnx_extensions( void ); int deinit_lnx_extensions( void ); +int init_vm_extensions(struct v3_guest * guest); +int deinit_vm_extensions(struct v3_guest * guest); + +void * get_vm_ext_data(struct v3_guest * guest, char * ext_name); + + + +struct global_ctrl { + unsigned int cmd; + + int (*handler)(unsigned int cmd, unsigned long arg); + + struct rb_node tree_node; +}; + +int add_global_ctrl(unsigned int cmd, + int (*handler)(unsigned int cmd, unsigned long arg)); + +struct global_ctrl * get_global_ctrl(unsigned int cmd); + +int remove_global_ctrl(unsigned int cmd); #define register_extension(ext) \ static struct linux_ext * _lnx_ext \ __attribute__((used)) \ - __attribute__((unused, __section("_lnx_exts"), \ + __attribute__((unused, __section__("_lnx_exts"), \ aligned(sizeof(void *)))) \ = ext;