Loading drivers/s390/char/monreader.c +17 −24 Original line number Diff line number Diff line Loading @@ -7,6 +7,9 @@ * Author: Gerald Schaefer <gerald.schaefer@de.ibm.com> */ #define KMSG_COMPONENT "monreader" #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/init.h> Loading @@ -24,19 +27,6 @@ #include <asm/ebcdic.h> #include <asm/extmem.h> //#define MON_DEBUG /* Debug messages on/off */ #define MON_NAME "monreader" #define P_INFO(x...) printk(KERN_INFO MON_NAME " info: " x) #define P_ERROR(x...) printk(KERN_ERR MON_NAME " error: " x) #define P_WARNING(x...) printk(KERN_WARNING MON_NAME " warning: " x) #ifdef MON_DEBUG #define P_DEBUG(x...) printk(KERN_DEBUG MON_NAME " debug: " x) #else #define P_DEBUG(x...) do {} while (0) #endif #define MON_COLLECT_SAMPLE 0x80 #define MON_COLLECT_EVENT 0x40 Loading Loading @@ -172,7 +162,7 @@ static int mon_send_reply(struct mon_msg *monmsg, } else monmsg->replied_msglim = 1; if (rc) { P_ERROR("read, IUCV reply failed with rc = %i\n\n", rc); pr_err("Reading monitor data failed with rc=%i\n", rc); return -EIO; } return 0; Loading Loading @@ -251,7 +241,8 @@ static void mon_iucv_path_severed(struct iucv_path *path, u8 ipuser[16]) { struct mon_private *monpriv = path->private; P_ERROR("IUCV connection severed with rc = 0x%X\n", ipuser[0]); pr_err("z/VM *MONITOR system service disconnected with rc=%i\n", ipuser[0]); iucv_path_sever(path, NULL); atomic_set(&monpriv->iucv_severed, 1); wake_up(&mon_conn_wait_queue); Loading @@ -266,8 +257,7 @@ static void mon_iucv_message_pending(struct iucv_path *path, memcpy(&monpriv->msg_array[monpriv->write_index]->msg, msg, sizeof(*msg)); if (atomic_inc_return(&monpriv->msglim_count) == MON_MSGLIM) { P_WARNING("IUCV message pending, message limit (%i) reached\n", MON_MSGLIM); pr_warning("The read queue for monitor data is full\n"); monpriv->msg_array[monpriv->write_index]->msglim_reached = 1; } monpriv->write_index = (monpriv->write_index + 1) % MON_MSGLIM; Loading Loading @@ -311,8 +301,8 @@ static int mon_open(struct inode *inode, struct file *filp) rc = iucv_path_connect(monpriv->path, &monreader_iucv_handler, MON_SERVICE, NULL, user_data_connect, monpriv); if (rc) { P_ERROR("iucv connection to *MONITOR failed with " "IPUSER SEVER code = %i\n", rc); pr_err("Connecting to the z/VM *MONITOR system service " "failed with rc=%i\n", rc); rc = -EIO; goto out_path; } Loading Loading @@ -353,7 +343,8 @@ static int mon_close(struct inode *inode, struct file *filp) */ rc = iucv_path_sever(monpriv->path, user_data_sever); if (rc) P_ERROR("close, iucv_sever failed with rc = %i\n", rc); pr_warning("Disconnecting the z/VM *MONITOR system service " "failed with rc=%i\n", rc); atomic_set(&monpriv->iucv_severed, 0); atomic_set(&monpriv->iucv_connected, 0); Loading Loading @@ -469,7 +460,8 @@ static int __init mon_init(void) int rc; if (!MACHINE_IS_VM) { P_ERROR("not running under z/VM, driver not loaded\n"); pr_err("The z/VM *MONITOR record device driver cannot be " "loaded without z/VM\n"); return -ENODEV; } Loading @@ -478,7 +470,8 @@ static int __init mon_init(void) */ rc = iucv_register(&monreader_iucv_handler, 1); if (rc) { P_ERROR("failed to register with iucv driver\n"); pr_err("The z/VM *MONITOR record device driver failed to " "register with IUCV\n"); return rc; } Loading @@ -488,8 +481,8 @@ static int __init mon_init(void) goto out_iucv; } if (rc != SEG_TYPE_SC) { P_ERROR("segment %s has unsupported type, should be SC\n", mon_dcss_name); pr_err("The specified *MONITOR DCSS %s does not have the " "required type SC\n", mon_dcss_name); rc = -EINVAL; goto out_iucv; } Loading Loading
drivers/s390/char/monreader.c +17 −24 Original line number Diff line number Diff line Loading @@ -7,6 +7,9 @@ * Author: Gerald Schaefer <gerald.schaefer@de.ibm.com> */ #define KMSG_COMPONENT "monreader" #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/init.h> Loading @@ -24,19 +27,6 @@ #include <asm/ebcdic.h> #include <asm/extmem.h> //#define MON_DEBUG /* Debug messages on/off */ #define MON_NAME "monreader" #define P_INFO(x...) printk(KERN_INFO MON_NAME " info: " x) #define P_ERROR(x...) printk(KERN_ERR MON_NAME " error: " x) #define P_WARNING(x...) printk(KERN_WARNING MON_NAME " warning: " x) #ifdef MON_DEBUG #define P_DEBUG(x...) printk(KERN_DEBUG MON_NAME " debug: " x) #else #define P_DEBUG(x...) do {} while (0) #endif #define MON_COLLECT_SAMPLE 0x80 #define MON_COLLECT_EVENT 0x40 Loading Loading @@ -172,7 +162,7 @@ static int mon_send_reply(struct mon_msg *monmsg, } else monmsg->replied_msglim = 1; if (rc) { P_ERROR("read, IUCV reply failed with rc = %i\n\n", rc); pr_err("Reading monitor data failed with rc=%i\n", rc); return -EIO; } return 0; Loading Loading @@ -251,7 +241,8 @@ static void mon_iucv_path_severed(struct iucv_path *path, u8 ipuser[16]) { struct mon_private *monpriv = path->private; P_ERROR("IUCV connection severed with rc = 0x%X\n", ipuser[0]); pr_err("z/VM *MONITOR system service disconnected with rc=%i\n", ipuser[0]); iucv_path_sever(path, NULL); atomic_set(&monpriv->iucv_severed, 1); wake_up(&mon_conn_wait_queue); Loading @@ -266,8 +257,7 @@ static void mon_iucv_message_pending(struct iucv_path *path, memcpy(&monpriv->msg_array[monpriv->write_index]->msg, msg, sizeof(*msg)); if (atomic_inc_return(&monpriv->msglim_count) == MON_MSGLIM) { P_WARNING("IUCV message pending, message limit (%i) reached\n", MON_MSGLIM); pr_warning("The read queue for monitor data is full\n"); monpriv->msg_array[monpriv->write_index]->msglim_reached = 1; } monpriv->write_index = (monpriv->write_index + 1) % MON_MSGLIM; Loading Loading @@ -311,8 +301,8 @@ static int mon_open(struct inode *inode, struct file *filp) rc = iucv_path_connect(monpriv->path, &monreader_iucv_handler, MON_SERVICE, NULL, user_data_connect, monpriv); if (rc) { P_ERROR("iucv connection to *MONITOR failed with " "IPUSER SEVER code = %i\n", rc); pr_err("Connecting to the z/VM *MONITOR system service " "failed with rc=%i\n", rc); rc = -EIO; goto out_path; } Loading Loading @@ -353,7 +343,8 @@ static int mon_close(struct inode *inode, struct file *filp) */ rc = iucv_path_sever(monpriv->path, user_data_sever); if (rc) P_ERROR("close, iucv_sever failed with rc = %i\n", rc); pr_warning("Disconnecting the z/VM *MONITOR system service " "failed with rc=%i\n", rc); atomic_set(&monpriv->iucv_severed, 0); atomic_set(&monpriv->iucv_connected, 0); Loading Loading @@ -469,7 +460,8 @@ static int __init mon_init(void) int rc; if (!MACHINE_IS_VM) { P_ERROR("not running under z/VM, driver not loaded\n"); pr_err("The z/VM *MONITOR record device driver cannot be " "loaded without z/VM\n"); return -ENODEV; } Loading @@ -478,7 +470,8 @@ static int __init mon_init(void) */ rc = iucv_register(&monreader_iucv_handler, 1); if (rc) { P_ERROR("failed to register with iucv driver\n"); pr_err("The z/VM *MONITOR record device driver failed to " "register with IUCV\n"); return rc; } Loading @@ -488,8 +481,8 @@ static int __init mon_init(void) goto out_iucv; } if (rc != SEG_TYPE_SC) { P_ERROR("segment %s has unsupported type, should be SC\n", mon_dcss_name); pr_err("The specified *MONITOR DCSS %s does not have the " "required type SC\n", mon_dcss_name); rc = -EINVAL; goto out_iucv; } Loading