Lines Matching defs:pkevp

144 port_send_event(port_kevent_t *pkevp)
148 portq = &pkevp->portkev_port->port_queue;
151 if (pkevp->portkev_flags & PORT_KEV_DONEQ) {
153 if (pkevp->portkev_source == PORT_SOURCE_FD) {
154 mutex_exit(&pkevp->portkev_lock);
161 list_insert_tail(&portq->portq_list, pkevp);
169 pkevp->portkev_flags |= PORT_KEV_DONEQ; /* event enqueued */
171 if (pkevp->portkev_source == PORT_SOURCE_FD) {
172 mutex_exit(&pkevp->portkev_lock);
178 if (pkevp->portkev_port->port_curr <= portq->portq_nent)
199 if (pkevp->portkev_source != PORT_SOURCE_FD &&
206 * may end up freeing pkevp once portq_mutex is dropped.
208 pp = pkevp->portkev_port;
252 port_kevent_t *pkevp;
262 pkevp = kmem_cache_alloc(port_control.pc_cache, KM_NOSLEEP);
263 if (pkevp == NULL) {
276 kmem_cache_free(port_control.pc_cache, pkevp);
283 bzero(pkevp, sizeof (port_kevent_t));
284 mutex_init(&pkevp->portkev_lock, NULL, MUTEX_DEFAULT, NULL);
285 pkevp->portkev_source = source;
286 pkevp->portkev_flags = flags;
287 pkevp->portkev_pid = curproc->p_pid;
288 pkevp->portkev_port = pp;
289 *pkevpp = pkevp;
300 port_dup_event(port_kevent_t *pkevp, port_kevent_t **pkevdupp, int flags)
304 error = port_alloc_event_local(pkevp->portkev_port,
305 pkevp->portkev_source, flags, pkevdupp);
307 (*pkevdupp)->portkev_pid = pkevp->portkev_pid;
321 port_kevent_t *pkevp;
323 pkevp = kmem_cache_alloc(port_control.pc_cache, KM_NOSLEEP);
324 if (pkevp == NULL)
330 kmem_cache_free(port_control.pc_cache, pkevp);
336 bzero(pkevp, sizeof (port_kevent_t));
337 mutex_init(&pkevp->portkev_lock, NULL, MUTEX_DEFAULT, NULL);
338 pkevp->portkev_flags = flags;
339 pkevp->portkev_port = pp;
340 pkevp->portkev_source = source;
341 pkevp->portkev_pid = curproc->p_pid;
342 *pkevpp = pkevp;
357 port_kevent_t *pkevp =
365 kmem_cache_free(port_control.pc_cache, pkevp);
372 bzero(pkevp, sizeof (port_kevent_t));
373 mutex_init(&pkevp->portkev_lock, NULL, MUTEX_DEFAULT, NULL);
374 pkevp->portkev_flags = flags;
375 pkevp->portkev_port = pp;
376 pkevp->portkev_source = source;
377 pkevp->portkev_pid = curproc->p_pid;
378 *pkevpp = pkevp;
386 port_remove_event_doneq(port_kevent_t *pkevp, port_queue_t *portq)
389 list_remove(&portq->portq_list, pkevp);
391 pkevp->portkev_flags &= ~PORT_KEV_DONEQ;
401 port_remove_done_event(port_kevent_t *pkevp)
406 portq = &pkevp->portkev_port->port_queue;
410 if (pkevp->portkev_flags & PORT_KEV_DONEQ) {
421 port_remove_event_doneq(pkevp, portq);
436 port_free_event(port_kevent_t *pkevp)
441 pp = pkevp->portkev_port;
444 if (pkevp->portkev_flags & PORT_ALLOC_PRIVATE) {
445 port_free_event_local(pkevp, 0);
452 if (pkevp->portkev_flags & PORT_KEV_DONEQ) {
453 pkevp->portkev_flags |= PORT_KEV_FREE;
454 pkevp->portkev_callback = NULL;
461 if (pkevp->portkev_flags & PORT_KEV_CACHED) {
480 port_free_event_local(pkevp, 1);
489 port_free_event_local(port_kevent_t *pkevp, int counter)
491 port_t *pp = pkevp->portkev_port;
495 pkevp->portkev_callback = NULL;
496 pkevp->portkev_flags = 0;
497 pkevp->portkev_port = NULL;
498 mutex_destroy(&pkevp->portkev_lock);
499 kmem_cache_free(port_control.pc_cache, pkevp);
521 * pkevp : pointer to the port event structure
535 port_init_event(port_kevent_t *pkevp, uintptr_t object, void *user,
539 pkevp->portkev_object = object;
540 pkevp->portkev_user = user;
541 pkevp->portkev_callback = port_callback;
542 pkevp->portkev_arg = sysarg;
621 port_kevent_t *pkevp;
630 pkevp = pdp->pd_portev;
634 if (pkevp->portkev_flags & PORT_KEV_DONEQ) {
643 port_remove_event_doneq(pkevp, portq);
648 if (pkevp->portkev_callback) {
649 (void) (*pkevp->portkev_callback)(pkevp->portkev_arg,
650 &error, pkevp->portkev_pid, PORT_CALLBACK_DISSOCIATE,
651 pkevp);
653 port_free_event_local(pkevp, 0);