Lines Matching refs:sync

55 	selectsync			*sync;
366 // create sync structure
367 wait_for_objects_sync* sync = new(nothrow) wait_for_objects_sync;
368 if (sync == NULL)
370 ObjectDeleter<wait_for_objects_sync> syncDeleter(sync);
373 sync->set = new(nothrow) select_info[numFDs];
374 if (sync->set == NULL)
376 ArrayDeleter<select_info> setDeleter(sync->set);
379 sync->sem = create_sem(0, "select");
380 if (sync->sem < 0)
381 return sync->sem;
383 sync->count = numFDs;
386 sync->set[i].next = NULL;
387 sync->set[i].sync = sync;
392 _sync = sync;
399 acquire_select_sync(select_sync* sync)
401 FUNCTION(("acquire_select_sync(%p)\n", sync));
402 sync->AcquireReference();
407 put_select_sync(select_sync* sync)
409 FUNCTION(("put_select_sync(%p): -> %ld\n", sync, sync->CountReferences() - 1));
410 sync->ReleaseReference();
459 // allocate sync object
460 wait_for_objects_sync* sync;
461 status = create_select_sync(numFDs, sync);
470 sync->set[fd].selected_events = 0;
471 sync->set[fd].events = 0;
474 sync->set[fd].selected_events = SELECT_FLAG(B_SELECT_READ)
478 sync->set[fd].selected_events |= SELECT_FLAG(B_SELECT_WRITE)
482 sync->set[fd].selected_events |= SELECT_FLAG(B_SELECT_ERROR);
484 if (sync->set[fd].selected_events != 0) {
485 select_fd(fd, sync->set + fd, kernel);
502 status = acquire_sem_etc(sync->sem, 1,
514 deselect_fd(fd, sync->set + fd, kernel);
525 put_select_sync(sync);
539 if (readSet && sync->set[fd].events & (SELECT_FLAG(B_SELECT_READ)
545 && sync->set[fd].events & (SELECT_FLAG(B_SELECT_WRITE)
551 && sync->set[fd].events & SELECT_FLAG(B_SELECT_ERROR)) {
560 put_select_sync(sync);
572 // allocate sync object
573 wait_for_objects_sync* sync;
574 status_t status = create_select_sync(numFDs, sync);
587 sync->set[i].selected_events = fds[i].events
589 sync->set[i].events = 0;
592 if (fd >= 0 && select_fd(fd, sync->set + i, kernel) != B_OK) {
593 sync->set[i].events = POLLNVAL;
612 status = acquire_sem_etc(sync->sem, 1,
624 deselect_fd(fds[i].fd, sync->set + i, kernel);
637 fds[i].revents = sync->set[i].events
638 & sync->set[i].selected_events;
651 put_select_sync(sync);
665 // allocate sync object
666 wait_for_objects_sync* sync;
667 status = create_select_sync(numInfos, sync);
679 sync->set[i].selected_events = infos[i].events
681 sync->set[i].events = 0;
684 if (select_object(type, object, sync->set + i, kernel) != B_OK) {
685 sync->set[i].events = B_EVENT_INVALID;
693 status = acquire_sem_etc(sync->sem, 1, B_CAN_INTERRUPT | flags,
703 deselect_object(type, infos[i].object, sync->set + i, kernel);
711 infos[i].events = sync->set[i].events
712 & sync->set[i].selected_events;
721 put_select_sync(sync);
733 FUNCTION(("notify_select_events(%p (%p), 0x%x)\n", info, info->sync,
736 if (info == NULL || info->sync == NULL)
739 return info->sync->Notify(info, events);
759 notify_select_event(struct selectsync *sync, uint8 event)
761 return notify_select_events((select_info*)sync, SELECT_FLAG(event));
769 find_select_sync_pool_entry(select_sync_pool *pool, selectsync *sync)
774 if (entry->sync == sync)
783 add_select_sync_pool_entry(select_sync_pool *pool, selectsync *sync,
787 select_sync_pool_entry *entry = find_select_sync_pool_entry(pool, sync);
793 entry->sync = sync;
806 add_select_sync_pool_entry(select_sync_pool **_pool, selectsync *sync,
820 status_t error = add_select_sync_pool_entry(pool, sync, event);
833 remove_select_sync_pool_entry(select_sync_pool **_pool, selectsync *sync,
845 if (entry->sync == sync) {
897 notify_select_event(entry->sync, event);