Lines Matching refs:monpriv
148 struct mon_private *monpriv) in mon_send_reply() argument
152 rc = iucv_message_reply(monpriv->path, &monmsg->msg, in mon_send_reply()
154 atomic_dec(&monpriv->msglim_count); in mon_send_reply()
158 monpriv->read_index = (monpriv->read_index + 1) % in mon_send_reply()
160 atomic_dec(&monpriv->read_ready); in mon_send_reply()
170 static void mon_free_mem(struct mon_private *monpriv) in mon_free_mem() argument
175 kfree(monpriv->msg_array[i]); in mon_free_mem()
176 kfree(monpriv); in mon_free_mem()
182 struct mon_private *monpriv; in mon_alloc_mem() local
184 monpriv = kzalloc_obj(struct mon_private); in mon_alloc_mem()
185 if (!monpriv) in mon_alloc_mem()
188 monpriv->msg_array[i] = kzalloc_obj(struct mon_msg); in mon_alloc_mem()
189 if (!monpriv->msg_array[i]) { in mon_alloc_mem()
190 mon_free_mem(monpriv); in mon_alloc_mem()
194 return monpriv; in mon_alloc_mem()
205 static struct mon_msg *mon_next_message(struct mon_private *monpriv) in mon_next_message() argument
209 if (!atomic_read(&monpriv->read_ready)) in mon_next_message()
211 monmsg = monpriv->msg_array[monpriv->read_index]; in mon_next_message()
217 monpriv->read_index = (monpriv->read_index + 1) % in mon_next_message()
219 atomic_dec(&monpriv->read_ready); in mon_next_message()
231 struct mon_private *monpriv = path->private; in mon_iucv_path_complete() local
233 atomic_set(&monpriv->iucv_connected, 1); in mon_iucv_path_complete()
239 struct mon_private *monpriv = path->private; in mon_iucv_path_severed() local
244 atomic_set(&monpriv->iucv_severed, 1); in mon_iucv_path_severed()
252 struct mon_private *monpriv = path->private; in mon_iucv_message_pending() local
254 memcpy(&monpriv->msg_array[monpriv->write_index]->msg, in mon_iucv_message_pending()
256 if (atomic_inc_return(&monpriv->msglim_count) == MON_MSGLIM) { in mon_iucv_message_pending()
258 monpriv->msg_array[monpriv->write_index]->msglim_reached = 1; in mon_iucv_message_pending()
260 monpriv->write_index = (monpriv->write_index + 1) % MON_MSGLIM; in mon_iucv_message_pending()
261 atomic_inc(&monpriv->read_ready); in mon_iucv_message_pending()
276 struct mon_private *monpriv; in mon_open() local
287 monpriv = mon_alloc_mem(); in mon_open()
288 if (!monpriv) in mon_open()
294 monpriv->path = iucv_path_alloc(MON_MSGLIM, IUCV_IPRMDATA, GFP_KERNEL); in mon_open()
295 if (!monpriv->path) in mon_open()
297 rc = iucv_path_connect(monpriv->path, &monreader_iucv_handler, in mon_open()
298 MON_SERVICE, NULL, user_data_connect, monpriv); in mon_open()
309 atomic_read(&monpriv->iucv_connected) || in mon_open()
310 atomic_read(&monpriv->iucv_severed)); in mon_open()
311 if (atomic_read(&monpriv->iucv_severed)) { in mon_open()
312 atomic_set(&monpriv->iucv_severed, 0); in mon_open()
313 atomic_set(&monpriv->iucv_connected, 0); in mon_open()
317 filp->private_data = monpriv; in mon_open()
321 iucv_path_free(monpriv->path); in mon_open()
323 mon_free_mem(monpriv); in mon_open()
333 struct mon_private *monpriv = filp->private_data; in mon_close() local
338 if (monpriv->path) { in mon_close()
339 rc = iucv_path_sever(monpriv->path, user_data_sever); in mon_close()
343 iucv_path_free(monpriv->path); in mon_close()
346 atomic_set(&monpriv->iucv_severed, 0); in mon_close()
347 atomic_set(&monpriv->iucv_connected, 0); in mon_close()
348 atomic_set(&monpriv->read_ready, 0); in mon_close()
349 atomic_set(&monpriv->msglim_count, 0); in mon_close()
350 monpriv->write_index = 0; in mon_close()
351 monpriv->read_index = 0; in mon_close()
354 kfree(monpriv->msg_array[i]); in mon_close()
355 kfree(monpriv); in mon_close()
363 struct mon_private *monpriv = filp->private_data; in mon_read() local
368 monmsg = mon_next_message(monpriv); in mon_read()
376 atomic_read(&monpriv->read_ready) || in mon_read()
377 atomic_read(&monpriv->iucv_severed)); in mon_read()
380 if (unlikely(atomic_read(&monpriv->iucv_severed))) in mon_read()
382 monmsg = monpriv->msg_array[monpriv->read_index]; in mon_read()
416 ret = mon_send_reply(monmsg, monpriv); in mon_read()
426 struct mon_private *monpriv = filp->private_data; in mon_poll() local
429 if (unlikely(atomic_read(&monpriv->iucv_severed))) in mon_poll()
431 if (atomic_read(&monpriv->read_ready)) in mon_poll()