Commit 96d042a6 authored by Frank Blaschka's avatar Frank Blaschka Committed by David S. Miller

iucv: introduce loadable iucv interface

This patch adds a symbol to dynamically load iucv functions.
Signed-off-by: default avatarFrank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 99558ea9
...@@ -120,7 +120,7 @@ struct iucv_message { ...@@ -120,7 +120,7 @@ struct iucv_message {
u32 reply_size; u32 reply_size;
u8 rmmsg[8]; u8 rmmsg[8];
u8 flags; u8 flags;
}; } __packed;
/* /*
* struct iucv_handler * struct iucv_handler
...@@ -459,3 +459,37 @@ int __iucv_message_send(struct iucv_path *path, struct iucv_message *msg, ...@@ -459,3 +459,37 @@ int __iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
int iucv_message_send2way(struct iucv_path *path, struct iucv_message *msg, int iucv_message_send2way(struct iucv_path *path, struct iucv_message *msg,
u8 flags, u32 srccls, void *buffer, size_t size, u8 flags, u32 srccls, void *buffer, size_t size,
void *answer, size_t asize, size_t *residual); void *answer, size_t asize, size_t *residual);
struct iucv_interface {
int (*message_receive)(struct iucv_path *path, struct iucv_message *msg,
u8 flags, void *buffer, size_t size, size_t *residual);
int (*__message_receive)(struct iucv_path *path,
struct iucv_message *msg, u8 flags, void *buffer, size_t size,
size_t *residual);
int (*message_reply)(struct iucv_path *path, struct iucv_message *msg,
u8 flags, void *reply, size_t size);
int (*message_reject)(struct iucv_path *path, struct iucv_message *msg);
int (*message_send)(struct iucv_path *path, struct iucv_message *msg,
u8 flags, u32 srccls, void *buffer, size_t size);
int (*__message_send)(struct iucv_path *path, struct iucv_message *msg,
u8 flags, u32 srccls, void *buffer, size_t size);
int (*message_send2way)(struct iucv_path *path,
struct iucv_message *msg, u8 flags, u32 srccls, void *buffer,
size_t size, void *answer, size_t asize, size_t *residual);
int (*message_purge)(struct iucv_path *path, struct iucv_message *msg,
u32 srccls);
int (*path_accept)(struct iucv_path *path, struct iucv_handler *handler,
u8 userdata[16], void *private);
int (*path_connect)(struct iucv_path *path,
struct iucv_handler *handler,
u8 userid[8], u8 system[8], u8 userdata[16], void *private);
int (*path_quiesce)(struct iucv_path *path, u8 userdata[16]);
int (*path_resume)(struct iucv_path *path, u8 userdata[16]);
int (*path_sever)(struct iucv_path *path, u8 userdata[16]);
int (*iucv_register)(struct iucv_handler *handler, int smp);
void (*iucv_unregister)(struct iucv_handler *handler, int smp);
struct bus_type *bus;
struct device *root;
};
extern struct iucv_interface iucv_if;
...@@ -1974,6 +1974,27 @@ static int iucv_pm_restore(struct device *dev) ...@@ -1974,6 +1974,27 @@ static int iucv_pm_restore(struct device *dev)
return rc; return rc;
} }
struct iucv_interface iucv_if = {
.message_receive = iucv_message_receive,
.__message_receive = __iucv_message_receive,
.message_reply = iucv_message_reply,
.message_reject = iucv_message_reject,
.message_send = iucv_message_send,
.__message_send = __iucv_message_send,
.message_send2way = iucv_message_send2way,
.message_purge = iucv_message_purge,
.path_accept = iucv_path_accept,
.path_connect = iucv_path_connect,
.path_quiesce = iucv_path_quiesce,
.path_resume = iucv_path_resume,
.path_sever = iucv_path_sever,
.iucv_register = iucv_register,
.iucv_unregister = iucv_unregister,
.bus = NULL,
.root = NULL,
};
EXPORT_SYMBOL(iucv_if);
/** /**
* iucv_init * iucv_init
* *
...@@ -2038,6 +2059,8 @@ static int __init iucv_init(void) ...@@ -2038,6 +2059,8 @@ static int __init iucv_init(void)
rc = bus_register(&iucv_bus); rc = bus_register(&iucv_bus);
if (rc) if (rc)
goto out_reboot; goto out_reboot;
iucv_if.root = iucv_root;
iucv_if.bus = &iucv_bus;
return 0; return 0;
out_reboot: out_reboot:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment