• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/s390/char/

Lines Matching refs:monmsg

104 static inline unsigned long mon_mca_start(struct mon_msg *monmsg)
106 return *(u32 *) &monmsg->msg.rmmsg;
109 static inline unsigned long mon_mca_end(struct mon_msg *monmsg)
111 return *(u32 *) &monmsg->msg.rmmsg[4];
114 static inline u8 mon_mca_type(struct mon_msg *monmsg, u8 index)
116 return *((u8 *) mon_mca_start(monmsg) + monmsg->mca_offset + index);
119 static inline u32 mon_mca_size(struct mon_msg *monmsg)
121 return mon_mca_end(monmsg) - mon_mca_start(monmsg) + 1;
124 static inline u32 mon_rec_start(struct mon_msg *monmsg)
126 return *((u32 *) (mon_mca_start(monmsg) + monmsg->mca_offset + 4));
129 static inline u32 mon_rec_end(struct mon_msg *monmsg)
131 return *((u32 *) (mon_mca_start(monmsg) + monmsg->mca_offset + 8));
134 static int mon_check_mca(struct mon_msg *monmsg)
136 if ((mon_rec_end(monmsg) <= mon_rec_start(monmsg)) ||
137 (mon_rec_start(monmsg) < mon_dcss_start) ||
138 (mon_rec_end(monmsg) > mon_dcss_end) ||
139 (mon_mca_type(monmsg, 0) == 0) ||
140 (mon_mca_size(monmsg) % 12 != 0) ||
141 (mon_mca_end(monmsg) <= mon_mca_start(monmsg)) ||
142 (mon_mca_end(monmsg) > mon_dcss_end) ||
143 (mon_mca_start(monmsg) < mon_dcss_start) ||
144 ((mon_mca_type(monmsg, 1) == 0) && (mon_mca_type(monmsg, 2) == 0)))
149 static int mon_send_reply(struct mon_msg *monmsg,
154 rc = iucv_message_reply(monpriv->path, &monmsg->msg,
157 if (likely(!monmsg->msglim_reached)) {
158 monmsg->pos = 0;
159 monmsg->mca_offset = 0;
164 monmsg->replied_msglim = 1;
201 static inline void mon_next_mca(struct mon_msg *monmsg)
203 if (likely((mon_mca_size(monmsg) - monmsg->mca_offset) == 12))
205 monmsg->mca_offset += 12;
206 monmsg->pos = 0;
211 struct mon_msg *monmsg;
215 monmsg = monpriv->msg_array[monpriv->read_index];
216 if (unlikely(monmsg->replied_msglim)) {
217 monmsg->replied_msglim = 0;
218 monmsg->msglim_reached = 0;
219 monmsg->pos = 0;
220 monmsg->mca_offset = 0;
226 return monmsg;
370 struct mon_msg *monmsg;
374 monmsg = mon_next_message(monpriv);
375 if (IS_ERR(monmsg))
376 return PTR_ERR(monmsg);
378 if (!monmsg) {
388 monmsg = monpriv->msg_array[monpriv->read_index];
391 if (!monmsg->pos)
392 monmsg->pos = mon_mca_start(monmsg) + monmsg->mca_offset;
393 if (mon_check_mca(monmsg))
397 mce_start = mon_mca_start(monmsg) + monmsg->mca_offset;
398 if ((monmsg->pos >= mce_start) && (monmsg->pos < mce_start + 12)) {
399 count = min(count, (size_t) mce_start + 12 - monmsg->pos);
400 ret = copy_to_user(data, (void *) (unsigned long) monmsg->pos,
404 monmsg->pos += count;
405 if (monmsg->pos == mce_start + 12)
406 monmsg->pos = mon_rec_start(monmsg);
411 if (monmsg->pos <= mon_rec_end(monmsg)) {
412 count = min(count, (size_t) mon_rec_end(monmsg) - monmsg->pos
414 ret = copy_to_user(data, (void *) (unsigned long) monmsg->pos,
418 monmsg->pos += count;
419 if (monmsg->pos > mon_rec_end(monmsg))
420 mon_next_mca(monmsg);
424 ret = mon_send_reply(monmsg, monpriv);