Lines Matching refs:monpriv
151 struct mon_private *monpriv)
155 rc = iucv_message_reply(monpriv->path, &monmsg->msg,
157 atomic_dec(&monpriv->msglim_count);
161 monpriv->read_index = (monpriv->read_index + 1) %
163 atomic_dec(&monpriv->read_ready);
173 static void mon_free_mem(struct mon_private *monpriv)
178 kfree(monpriv->msg_array[i]);
179 kfree(monpriv);
185 struct mon_private *monpriv;
187 monpriv = kzalloc(sizeof(struct mon_private), GFP_KERNEL);
188 if (!monpriv)
191 monpriv->msg_array[i] = kzalloc(sizeof(struct mon_msg),
193 if (!monpriv->msg_array[i]) {
194 mon_free_mem(monpriv);
198 return monpriv;
209 static struct mon_msg *mon_next_message(struct mon_private *monpriv)
213 if (!atomic_read(&monpriv->read_ready))
215 monmsg = monpriv->msg_array[monpriv->read_index];
221 monpriv->read_index = (monpriv->read_index + 1) %
223 atomic_dec(&monpriv->read_ready);
235 struct mon_private *monpriv = path->private;
237 atomic_set(&monpriv->iucv_connected, 1);
243 struct mon_private *monpriv = path->private;
248 atomic_set(&monpriv->iucv_severed, 1);
256 struct mon_private *monpriv = path->private;
258 memcpy(&monpriv->msg_array[monpriv->write_index]->msg,
260 if (atomic_inc_return(&monpriv->msglim_count) == MON_MSGLIM) {
262 monpriv->msg_array[monpriv->write_index]->msglim_reached = 1;
264 monpriv->write_index = (monpriv->write_index + 1) % MON_MSGLIM;
265 atomic_inc(&monpriv->read_ready);
280 struct mon_private *monpriv;
291 monpriv = mon_alloc_mem();
292 if (!monpriv)
298 monpriv->path = iucv_path_alloc(MON_MSGLIM, IUCV_IPRMDATA, GFP_KERNEL);
299 if (!monpriv->path)
301 rc = iucv_path_connect(monpriv->path, &monreader_iucv_handler,
302 MON_SERVICE, NULL, user_data_connect, monpriv);
313 atomic_read(&monpriv->iucv_connected) ||
314 atomic_read(&monpriv->iucv_severed));
315 if (atomic_read(&monpriv->iucv_severed)) {
316 atomic_set(&monpriv->iucv_severed, 0);
317 atomic_set(&monpriv->iucv_connected, 0);
321 filp->private_data = monpriv;
322 dev_set_drvdata(monreader_device, monpriv);
326 iucv_path_free(monpriv->path);
328 mon_free_mem(monpriv);
338 struct mon_private *monpriv = filp->private_data;
343 if (monpriv->path) {
344 rc = iucv_path_sever(monpriv->path, user_data_sever);
348 iucv_path_free(monpriv->path);
351 atomic_set(&monpriv->iucv_severed, 0);
352 atomic_set(&monpriv->iucv_connected, 0);
353 atomic_set(&monpriv->read_ready, 0);
354 atomic_set(&monpriv->msglim_count, 0);
355 monpriv->write_index = 0;
356 monpriv->read_index = 0;
360 kfree(monpriv->msg_array[i]);
361 kfree(monpriv);
369 struct mon_private *monpriv = filp->private_data;
374 monmsg = mon_next_message(monpriv);
382 atomic_read(&monpriv->read_ready) ||
383 atomic_read(&monpriv->iucv_severed));
386 if (unlikely(atomic_read(&monpriv->iucv_severed)))
388 monmsg = monpriv->msg_array[monpriv->read_index];
424 ret = mon_send_reply(monmsg, monpriv);
434 struct mon_private *monpriv = filp->private_data;
437 if (unlikely(atomic_read(&monpriv->iucv_severed)))
439 if (atomic_read(&monpriv->read_ready))
465 struct mon_private *monpriv = dev_get_drvdata(dev);
468 if (!monpriv)
470 if (monpriv->path) {
471 rc = iucv_path_sever(monpriv->path, user_data_sever);
475 iucv_path_free(monpriv->path);
477 atomic_set(&monpriv->iucv_severed, 0);
478 atomic_set(&monpriv->iucv_connected, 0);
479 atomic_set(&monpriv->read_ready, 0);
480 atomic_set(&monpriv->msglim_count, 0);
481 monpriv->write_index = 0;
482 monpriv->read_index = 0;
483 monpriv->path = NULL;
489 struct mon_private *monpriv = dev_get_drvdata(dev);
492 if (!monpriv)
495 monpriv->path = iucv_path_alloc(MON_MSGLIM, IUCV_IPRMDATA, GFP_KERNEL);
496 if (!monpriv->path)
498 rc = iucv_path_connect(monpriv->path, &monreader_iucv_handler,
499 MON_SERVICE, NULL, user_data_connect, monpriv);
506 atomic_read(&monpriv->iucv_connected) ||
507 atomic_read(&monpriv->iucv_severed));
508 if (atomic_read(&monpriv->iucv_severed))
513 iucv_path_free(monpriv->path);
514 monpriv->path = NULL;
516 atomic_set(&monpriv->iucv_severed, 1);