Lines Matching refs:monpriv
149 struct mon_private *monpriv)
153 rc = iucv_message_reply(monpriv->path, &monmsg->msg,
155 atomic_dec(&monpriv->msglim_count);
159 monpriv->read_index = (monpriv->read_index + 1) %
161 atomic_dec(&monpriv->read_ready);
171 static void mon_free_mem(struct mon_private *monpriv)
176 kfree(monpriv->msg_array[i]);
177 kfree(monpriv);
183 struct mon_private *monpriv;
185 monpriv = kzalloc(sizeof(struct mon_private), GFP_KERNEL);
186 if (!monpriv)
189 monpriv->msg_array[i] = kzalloc(sizeof(struct mon_msg),
191 if (!monpriv->msg_array[i]) {
192 mon_free_mem(monpriv);
196 return monpriv;
207 static struct mon_msg *mon_next_message(struct mon_private *monpriv)
211 if (!atomic_read(&monpriv->read_ready))
213 monmsg = monpriv->msg_array[monpriv->read_index];
219 monpriv->read_index = (monpriv->read_index + 1) %
221 atomic_dec(&monpriv->read_ready);
233 struct mon_private *monpriv = path->private;
235 atomic_set(&monpriv->iucv_connected, 1);
241 struct mon_private *monpriv = path->private;
246 atomic_set(&monpriv->iucv_severed, 1);
254 struct mon_private *monpriv = path->private;
256 memcpy(&monpriv->msg_array[monpriv->write_index]->msg,
258 if (atomic_inc_return(&monpriv->msglim_count) == MON_MSGLIM) {
260 monpriv->msg_array[monpriv->write_index]->msglim_reached = 1;
262 monpriv->write_index = (monpriv->write_index + 1) % MON_MSGLIM;
263 atomic_inc(&monpriv->read_ready);
278 struct mon_private *monpriv;
289 monpriv = mon_alloc_mem();
290 if (!monpriv)
296 monpriv->path = iucv_path_alloc(MON_MSGLIM, IUCV_IPRMDATA, GFP_KERNEL);
297 if (!monpriv->path)
299 rc = iucv_path_connect(monpriv->path, &monreader_iucv_handler,
300 MON_SERVICE, NULL, user_data_connect, monpriv);
311 atomic_read(&monpriv->iucv_connected) ||
312 atomic_read(&monpriv->iucv_severed));
313 if (atomic_read(&monpriv->iucv_severed)) {
314 atomic_set(&monpriv->iucv_severed, 0);
315 atomic_set(&monpriv->iucv_connected, 0);
319 filp->private_data = monpriv;
323 iucv_path_free(monpriv->path);
325 mon_free_mem(monpriv);
335 struct mon_private *monpriv = filp->private_data;
340 if (monpriv->path) {
341 rc = iucv_path_sever(monpriv->path, user_data_sever);
345 iucv_path_free(monpriv->path);
348 atomic_set(&monpriv->iucv_severed, 0);
349 atomic_set(&monpriv->iucv_connected, 0);
350 atomic_set(&monpriv->read_ready, 0);
351 atomic_set(&monpriv->msglim_count, 0);
352 monpriv->write_index = 0;
353 monpriv->read_index = 0;
356 kfree(monpriv->msg_array[i]);
357 kfree(monpriv);
365 struct mon_private *monpriv = filp->private_data;
370 monmsg = mon_next_message(monpriv);
378 atomic_read(&monpriv->read_ready) ||
379 atomic_read(&monpriv->iucv_severed));
382 if (unlikely(atomic_read(&monpriv->iucv_severed)))
384 monmsg = monpriv->msg_array[monpriv->read_index];
418 ret = mon_send_reply(monmsg, monpriv);
428 struct mon_private *monpriv = filp->private_data;
431 if (unlikely(atomic_read(&monpriv->iucv_severed)))
433 if (atomic_read(&monpriv->read_ready))