Lines Matching refs:monpriv
148 struct mon_private *monpriv)
152 rc = iucv_message_reply(monpriv->path, &monmsg->msg,
154 atomic_dec(&monpriv->msglim_count);
158 monpriv->read_index = (monpriv->read_index + 1) %
160 atomic_dec(&monpriv->read_ready);
170 static void mon_free_mem(struct mon_private *monpriv)
175 kfree(monpriv->msg_array[i]);
176 kfree(monpriv);
182 struct mon_private *monpriv;
184 monpriv = kzalloc(sizeof(struct mon_private), GFP_KERNEL);
185 if (!monpriv)
188 monpriv->msg_array[i] = kzalloc(sizeof(struct mon_msg),
190 if (!monpriv->msg_array[i]) {
191 mon_free_mem(monpriv);
195 return monpriv;
206 static struct mon_msg *mon_next_message(struct mon_private *monpriv)
210 if (!atomic_read(&monpriv->read_ready))
212 monmsg = monpriv->msg_array[monpriv->read_index];
218 monpriv->read_index = (monpriv->read_index + 1) %
220 atomic_dec(&monpriv->read_ready);
232 struct mon_private *monpriv = path->private;
234 atomic_set(&monpriv->iucv_connected, 1);
240 struct mon_private *monpriv = path->private;
245 atomic_set(&monpriv->iucv_severed, 1);
253 struct mon_private *monpriv = path->private;
255 memcpy(&monpriv->msg_array[monpriv->write_index]->msg,
257 if (atomic_inc_return(&monpriv->msglim_count) == MON_MSGLIM) {
259 monpriv->msg_array[monpriv->write_index]->msglim_reached = 1;
261 monpriv->write_index = (monpriv->write_index + 1) % MON_MSGLIM;
262 atomic_inc(&monpriv->read_ready);
277 struct mon_private *monpriv;
288 monpriv = mon_alloc_mem();
289 if (!monpriv)
295 monpriv->path = iucv_path_alloc(MON_MSGLIM, IUCV_IPRMDATA, GFP_KERNEL);
296 if (!monpriv->path)
298 rc = iucv_path_connect(monpriv->path, &monreader_iucv_handler,
299 MON_SERVICE, NULL, user_data_connect, monpriv);
310 atomic_read(&monpriv->iucv_connected) ||
311 atomic_read(&monpriv->iucv_severed));
312 if (atomic_read(&monpriv->iucv_severed)) {
313 atomic_set(&monpriv->iucv_severed, 0);
314 atomic_set(&monpriv->iucv_connected, 0);
318 filp->private_data = monpriv;
322 iucv_path_free(monpriv->path);
324 mon_free_mem(monpriv);
334 struct mon_private *monpriv = filp->private_data;
339 if (monpriv->path) {
340 rc = iucv_path_sever(monpriv->path, user_data_sever);
344 iucv_path_free(monpriv->path);
347 atomic_set(&monpriv->iucv_severed, 0);
348 atomic_set(&monpriv->iucv_connected, 0);
349 atomic_set(&monpriv->read_ready, 0);
350 atomic_set(&monpriv->msglim_count, 0);
351 monpriv->write_index = 0;
352 monpriv->read_index = 0;
355 kfree(monpriv->msg_array[i]);
356 kfree(monpriv);
364 struct mon_private *monpriv = filp->private_data;
369 monmsg = mon_next_message(monpriv);
377 atomic_read(&monpriv->read_ready) ||
378 atomic_read(&monpriv->iucv_severed));
381 if (unlikely(atomic_read(&monpriv->iucv_severed)))
383 monmsg = monpriv->msg_array[monpriv->read_index];
417 ret = mon_send_reply(monmsg, monpriv);
427 struct mon_private *monpriv = filp->private_data;
430 if (unlikely(atomic_read(&monpriv->iucv_severed)))
432 if (atomic_read(&monpriv->read_ready))