monmsg            105 drivers/s390/char/monreader.c static inline unsigned long mon_mca_start(struct mon_msg *monmsg)
monmsg            107 drivers/s390/char/monreader.c 	return *(u32 *) &monmsg->msg.rmmsg;
monmsg            110 drivers/s390/char/monreader.c static inline unsigned long mon_mca_end(struct mon_msg *monmsg)
monmsg            112 drivers/s390/char/monreader.c 	return *(u32 *) &monmsg->msg.rmmsg[4];
monmsg            115 drivers/s390/char/monreader.c static inline u8 mon_mca_type(struct mon_msg *monmsg, u8 index)
monmsg            117 drivers/s390/char/monreader.c 	return *((u8 *) mon_mca_start(monmsg) + monmsg->mca_offset + index);
monmsg            120 drivers/s390/char/monreader.c static inline u32 mon_mca_size(struct mon_msg *monmsg)
monmsg            122 drivers/s390/char/monreader.c 	return mon_mca_end(monmsg) - mon_mca_start(monmsg) + 1;
monmsg            125 drivers/s390/char/monreader.c static inline u32 mon_rec_start(struct mon_msg *monmsg)
monmsg            127 drivers/s390/char/monreader.c 	return *((u32 *) (mon_mca_start(monmsg) + monmsg->mca_offset + 4));
monmsg            130 drivers/s390/char/monreader.c static inline u32 mon_rec_end(struct mon_msg *monmsg)
monmsg            132 drivers/s390/char/monreader.c 	return *((u32 *) (mon_mca_start(monmsg) + monmsg->mca_offset + 8));
monmsg            135 drivers/s390/char/monreader.c static int mon_check_mca(struct mon_msg *monmsg)
monmsg            137 drivers/s390/char/monreader.c 	if ((mon_rec_end(monmsg) <= mon_rec_start(monmsg)) ||
monmsg            138 drivers/s390/char/monreader.c 	    (mon_rec_start(monmsg) < mon_dcss_start) ||
monmsg            139 drivers/s390/char/monreader.c 	    (mon_rec_end(monmsg) > mon_dcss_end) ||
monmsg            140 drivers/s390/char/monreader.c 	    (mon_mca_type(monmsg, 0) == 0) ||
monmsg            141 drivers/s390/char/monreader.c 	    (mon_mca_size(monmsg) % 12 != 0) ||
monmsg            142 drivers/s390/char/monreader.c 	    (mon_mca_end(monmsg) <= mon_mca_start(monmsg)) ||
monmsg            143 drivers/s390/char/monreader.c 	    (mon_mca_end(monmsg) > mon_dcss_end) ||
monmsg            144 drivers/s390/char/monreader.c 	    (mon_mca_start(monmsg) < mon_dcss_start) ||
monmsg            145 drivers/s390/char/monreader.c 	    ((mon_mca_type(monmsg, 1) == 0) && (mon_mca_type(monmsg, 2) == 0)))
monmsg            150 drivers/s390/char/monreader.c static int mon_send_reply(struct mon_msg *monmsg,
monmsg            155 drivers/s390/char/monreader.c 	rc = iucv_message_reply(monpriv->path, &monmsg->msg,
monmsg            158 drivers/s390/char/monreader.c 	if (likely(!monmsg->msglim_reached)) {
monmsg            159 drivers/s390/char/monreader.c 		monmsg->pos = 0;
monmsg            160 drivers/s390/char/monreader.c 		monmsg->mca_offset = 0;
monmsg            165 drivers/s390/char/monreader.c 		monmsg->replied_msglim = 1;
monmsg            201 drivers/s390/char/monreader.c static inline void mon_next_mca(struct mon_msg *monmsg)
monmsg            203 drivers/s390/char/monreader.c 	if (likely((mon_mca_size(monmsg) - monmsg->mca_offset) == 12))
monmsg            205 drivers/s390/char/monreader.c 	monmsg->mca_offset += 12;
monmsg            206 drivers/s390/char/monreader.c 	monmsg->pos = 0;
monmsg            211 drivers/s390/char/monreader.c 	struct mon_msg *monmsg;
monmsg            215 drivers/s390/char/monreader.c 	monmsg = monpriv->msg_array[monpriv->read_index];
monmsg            216 drivers/s390/char/monreader.c 	if (unlikely(monmsg->replied_msglim)) {
monmsg            217 drivers/s390/char/monreader.c 		monmsg->replied_msglim = 0;
monmsg            218 drivers/s390/char/monreader.c 		monmsg->msglim_reached = 0;
monmsg            219 drivers/s390/char/monreader.c 		monmsg->pos = 0;
monmsg            220 drivers/s390/char/monreader.c 		monmsg->mca_offset = 0;
monmsg            226 drivers/s390/char/monreader.c 	return monmsg;
monmsg            370 drivers/s390/char/monreader.c 	struct mon_msg *monmsg;
monmsg            374 drivers/s390/char/monreader.c 	monmsg = mon_next_message(monpriv);
monmsg            375 drivers/s390/char/monreader.c 	if (IS_ERR(monmsg))
monmsg            376 drivers/s390/char/monreader.c 		return PTR_ERR(monmsg);
monmsg            378 drivers/s390/char/monreader.c 	if (!monmsg) {
monmsg            388 drivers/s390/char/monreader.c 		monmsg = monpriv->msg_array[monpriv->read_index];
monmsg            391 drivers/s390/char/monreader.c 	if (!monmsg->pos)
monmsg            392 drivers/s390/char/monreader.c 		monmsg->pos = mon_mca_start(monmsg) + monmsg->mca_offset;
monmsg            393 drivers/s390/char/monreader.c 	if (mon_check_mca(monmsg))
monmsg            397 drivers/s390/char/monreader.c 	mce_start = mon_mca_start(monmsg) + monmsg->mca_offset;
monmsg            398 drivers/s390/char/monreader.c 	if ((monmsg->pos >= mce_start) && (monmsg->pos < mce_start + 12)) {
monmsg            399 drivers/s390/char/monreader.c 		count = min(count, (size_t) mce_start + 12 - monmsg->pos);
monmsg            400 drivers/s390/char/monreader.c 		ret = copy_to_user(data, (void *) (unsigned long) monmsg->pos,
monmsg            404 drivers/s390/char/monreader.c 		monmsg->pos += count;
monmsg            405 drivers/s390/char/monreader.c 		if (monmsg->pos == mce_start + 12)
monmsg            406 drivers/s390/char/monreader.c 			monmsg->pos = mon_rec_start(monmsg);
monmsg            411 drivers/s390/char/monreader.c 	if (monmsg->pos <= mon_rec_end(monmsg)) {
monmsg            412 drivers/s390/char/monreader.c 		count = min(count, (size_t) mon_rec_end(monmsg) - monmsg->pos
monmsg            414 drivers/s390/char/monreader.c 		ret = copy_to_user(data, (void *) (unsigned long) monmsg->pos,
monmsg            418 drivers/s390/char/monreader.c 		monmsg->pos += count;
monmsg            419 drivers/s390/char/monreader.c 		if (monmsg->pos > mon_rec_end(monmsg))
monmsg            420 drivers/s390/char/monreader.c 			mon_next_mca(monmsg);
monmsg            424 drivers/s390/char/monreader.c 	ret = mon_send_reply(monmsg, monpriv);