[PATCH 3/7] [S390]: Adapt monreader driver to new IUCV API
From: Martin Schwidefsky [EMAIL PROTECTED] Adapt monreader character device driver to new IUCV API Signed-off-by: Frank Pavlic [EMAIL PROTECTED] Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED] --- drivers/s390/char/monreader.c | 218 +++-- 1 files changed, 101 insertions(+), 117 deletions(-) diff --git a/drivers/s390/char/monreader.c b/drivers/s390/char/monreader.c index a138b15..3a1a958 100644 --- a/drivers/s390/char/monreader.c +++ b/drivers/s390/char/monreader.c @@ -3,7 +3,7 @@ * * Character device driver for reading z/VM *MONITOR service records. * - * Copyright (C) 2004 IBM Corporation, IBM Deutschland Entwicklung GmbH. + * Copyright 2004 IBM Corporation, IBM Deutschland Entwicklung GmbH. * * Author: Gerald Schaefer [EMAIL PROTECTED] */ @@ -22,7 +22,7 @@ #include asm/uaccess.h #include asm/ebcdic.h #include asm/extmem.h #include linux/poll.h -#include ../net/iucv.h +#include net/iucv/iucv.h //#define MON_DEBUG/* Debug messages on/off */ @@ -50,14 +50,13 @@ static char mon_dcss_name[9] = MONDCSS\ struct mon_msg { u32 pos; u32 mca_offset; - iucv_MessagePending local_eib; + struct iucv_message msg; char msglim_reached; char replied_msglim; }; struct mon_private { - u16 pathid; - iucv_handle_t iucv_handle; + struct iucv_path *path; struct mon_msg *msg_array[MON_MSGLIM]; unsigned int write_index; unsigned int read_index; @@ -75,8 +74,6 @@ static unsigned long mon_dcss_end; static DECLARE_WAIT_QUEUE_HEAD(mon_read_wait_queue); static DECLARE_WAIT_QUEUE_HEAD(mon_conn_wait_queue); -static u8 iucv_host[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - static u8 user_data_connect[16] = { /* Version code, must be 0x01 for shared mode */ 0x01, @@ -100,8 +97,7 @@ static u8 user_data_sever[16] = { * Create the 8 bytes EBCDIC DCSS segment name from * an ASCII name, incl. padding */ -static inline void -dcss_mkname(char *ascii_name, char *ebcdic_name) +static inline void dcss_mkname(char *ascii_name, char *ebcdic_name) { int i; @@ -119,8 +115,7 @@ dcss_mkname(char *ascii_name, char *ebcd * print appropriate error message for segment_load()/segment_type() * return code */ -static void -mon_segment_warn(int rc, char* seg_name) +static void mon_segment_warn(int rc, char* seg_name) { switch (rc) { case -ENOENT: @@ -166,44 +161,37 @@ mon_segment_warn(int rc, char* seg_name) } } -static inline unsigned long -mon_mca_start(struct mon_msg *monmsg) +static inline unsigned long mon_mca_start(struct mon_msg *monmsg) { - return monmsg-local_eib.ln1msg1.iprmmsg1_u32; + return *(u32 *) monmsg-msg.rmmsg; } -static inline unsigned long -mon_mca_end(struct mon_msg *monmsg) +static inline unsigned long mon_mca_end(struct mon_msg *monmsg) { - return monmsg-local_eib.ln1msg2.ipbfln1f; + return *(u32 *) monmsg-msg.rmmsg[4]; } -static inline u8 -mon_mca_type(struct mon_msg *monmsg, u8 index) +static inline u8 mon_mca_type(struct mon_msg *monmsg, u8 index) { return *((u8 *) mon_mca_start(monmsg) + monmsg-mca_offset + index); } -static inline u32 -mon_mca_size(struct mon_msg *monmsg) +static inline u32 mon_mca_size(struct mon_msg *monmsg) { return mon_mca_end(monmsg) - mon_mca_start(monmsg) + 1; } -static inline u32 -mon_rec_start(struct mon_msg *monmsg) +static inline u32 mon_rec_start(struct mon_msg *monmsg) { return *((u32 *) (mon_mca_start(monmsg) + monmsg-mca_offset + 4)); } -static inline u32 -mon_rec_end(struct mon_msg *monmsg) +static inline u32 mon_rec_end(struct mon_msg *monmsg) { return *((u32 *) (mon_mca_start(monmsg) + monmsg-mca_offset + 8)); } -static inline int -mon_check_mca(struct mon_msg *monmsg) +static inline int mon_check_mca(struct mon_msg *monmsg) { if ((mon_rec_end(monmsg) = mon_rec_start(monmsg)) || (mon_rec_start(monmsg) mon_dcss_start) || @@ -221,20 +209,17 @@ mon_check_mca(struct mon_msg *monmsg) return 0; } -static inline int -mon_send_reply(struct mon_msg *monmsg, struct mon_private *monpriv) +static inline int mon_send_reply(struct mon_msg *monmsg, +struct mon_private *monpriv) { - u8 prmmsg[8]; int rc; P_DEBUG(read, REPLY: pathid = 0x%04X, msgid = 0x%08X, trgcls = 0x%08X\n\n, - monmsg-local_eib.ippathid, monmsg-local_eib.ipmsgid, - monmsg-local_eib.iptrgcls); - rc = iucv_reply_prmmsg(monmsg-local_eib.ippathid, - monmsg-local_eib.ipmsgid, - monmsg-local_eib.iptrgcls, - 0, prmmsg); + monpriv-path-pathid, monmsg-msg.id, monmsg-msg.class); + + rc = iucv_message_reply(monpriv-path, monmsg-msg, +
[PATCH 3/7] [S390]: Adapt monreader driver to new IUCV API
From: Martin Schwidefsky [EMAIL PROTECTED] Adapt monreader character device driver to new IUCV API Signed-off-by: Frank Pavlic [EMAIL PROTECTED] Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED] --- drivers/s390/char/monreader.c | 218 +++-- 1 files changed, 101 insertions(+), 117 deletions(-) diff --git a/drivers/s390/char/monreader.c b/drivers/s390/char/monreader.c index a138b15..3a1a958 100644 --- a/drivers/s390/char/monreader.c +++ b/drivers/s390/char/monreader.c @@ -3,7 +3,7 @@ * * Character device driver for reading z/VM *MONITOR service records. * - * Copyright (C) 2004 IBM Corporation, IBM Deutschland Entwicklung GmbH. + * Copyright 2004 IBM Corporation, IBM Deutschland Entwicklung GmbH. * * Author: Gerald Schaefer [EMAIL PROTECTED] */ @@ -22,7 +22,7 @@ #include asm/uaccess.h #include asm/ebcdic.h #include asm/extmem.h #include linux/poll.h -#include ../net/iucv.h +#include net/iucv/iucv.h //#define MON_DEBUG/* Debug messages on/off */ @@ -50,14 +50,13 @@ static char mon_dcss_name[9] = MONDCSS\ struct mon_msg { u32 pos; u32 mca_offset; - iucv_MessagePending local_eib; + struct iucv_message msg; char msglim_reached; char replied_msglim; }; struct mon_private { - u16 pathid; - iucv_handle_t iucv_handle; + struct iucv_path *path; struct mon_msg *msg_array[MON_MSGLIM]; unsigned int write_index; unsigned int read_index; @@ -75,8 +74,6 @@ static unsigned long mon_dcss_end; static DECLARE_WAIT_QUEUE_HEAD(mon_read_wait_queue); static DECLARE_WAIT_QUEUE_HEAD(mon_conn_wait_queue); -static u8 iucv_host[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - static u8 user_data_connect[16] = { /* Version code, must be 0x01 for shared mode */ 0x01, @@ -100,8 +97,7 @@ static u8 user_data_sever[16] = { * Create the 8 bytes EBCDIC DCSS segment name from * an ASCII name, incl. padding */ -static inline void -dcss_mkname(char *ascii_name, char *ebcdic_name) +static inline void dcss_mkname(char *ascii_name, char *ebcdic_name) { int i; @@ -119,8 +115,7 @@ dcss_mkname(char *ascii_name, char *ebcd * print appropriate error message for segment_load()/segment_type() * return code */ -static void -mon_segment_warn(int rc, char* seg_name) +static void mon_segment_warn(int rc, char* seg_name) { switch (rc) { case -ENOENT: @@ -166,44 +161,37 @@ mon_segment_warn(int rc, char* seg_name) } } -static inline unsigned long -mon_mca_start(struct mon_msg *monmsg) +static inline unsigned long mon_mca_start(struct mon_msg *monmsg) { - return monmsg-local_eib.ln1msg1.iprmmsg1_u32; + return *(u32 *) monmsg-msg.rmmsg; } -static inline unsigned long -mon_mca_end(struct mon_msg *monmsg) +static inline unsigned long mon_mca_end(struct mon_msg *monmsg) { - return monmsg-local_eib.ln1msg2.ipbfln1f; + return *(u32 *) monmsg-msg.rmmsg[4]; } -static inline u8 -mon_mca_type(struct mon_msg *monmsg, u8 index) +static inline u8 mon_mca_type(struct mon_msg *monmsg, u8 index) { return *((u8 *) mon_mca_start(monmsg) + monmsg-mca_offset + index); } -static inline u32 -mon_mca_size(struct mon_msg *monmsg) +static inline u32 mon_mca_size(struct mon_msg *monmsg) { return mon_mca_end(monmsg) - mon_mca_start(monmsg) + 1; } -static inline u32 -mon_rec_start(struct mon_msg *monmsg) +static inline u32 mon_rec_start(struct mon_msg *monmsg) { return *((u32 *) (mon_mca_start(monmsg) + monmsg-mca_offset + 4)); } -static inline u32 -mon_rec_end(struct mon_msg *monmsg) +static inline u32 mon_rec_end(struct mon_msg *monmsg) { return *((u32 *) (mon_mca_start(monmsg) + monmsg-mca_offset + 8)); } -static inline int -mon_check_mca(struct mon_msg *monmsg) +static inline int mon_check_mca(struct mon_msg *monmsg) { if ((mon_rec_end(monmsg) = mon_rec_start(monmsg)) || (mon_rec_start(monmsg) mon_dcss_start) || @@ -221,20 +209,17 @@ mon_check_mca(struct mon_msg *monmsg) return 0; } -static inline int -mon_send_reply(struct mon_msg *monmsg, struct mon_private *monpriv) +static inline int mon_send_reply(struct mon_msg *monmsg, +struct mon_private *monpriv) { - u8 prmmsg[8]; int rc; P_DEBUG(read, REPLY: pathid = 0x%04X, msgid = 0x%08X, trgcls = 0x%08X\n\n, - monmsg-local_eib.ippathid, monmsg-local_eib.ipmsgid, - monmsg-local_eib.iptrgcls); - rc = iucv_reply_prmmsg(monmsg-local_eib.ippathid, - monmsg-local_eib.ipmsgid, - monmsg-local_eib.iptrgcls, - 0, prmmsg); + monpriv-path-pathid, monmsg-msg.id, monmsg-msg.class); + + rc = iucv_message_reply(monpriv-path, monmsg-msg, +