Lines Matching refs:sync

50 	selectsync			*sync;
382 // create sync structure
383 select_sync* sync = new(nothrow) select_sync;
384 if (sync == NULL)
386 ObjectDeleter<select_sync> syncDeleter(sync);
389 sync->set = new(nothrow) select_info[numFDs];
390 if (sync->set == NULL)
392 ArrayDeleter<select_info> setDeleter(sync->set);
395 sync->sem = create_sem(0, "select");
396 if (sync->sem < 0)
397 return sync->sem;
399 sync->count = numFDs;
400 sync->ref_count = 1;
403 sync->set[i].next = NULL;
404 sync->set[i].sync = sync;
409 _sync = sync;
416 put_select_sync(select_sync* sync)
418 FUNCTION(("put_select_sync(%p): -> %ld\n", sync, sync->ref_count - 1));
420 if (atomic_add(&sync->ref_count, -1) == 1) {
421 delete_sem(sync->sem);
422 delete[] sync->set;
423 delete sync;
449 // allocate sync object
450 select_sync* sync;
451 status = create_select_sync(numFDs, sync);
460 sync->set[fd].selected_events = 0;
461 sync->set[fd].events = 0;
464 sync->set[fd].selected_events = SELECT_FLAG(B_SELECT_READ);
466 sync->set[fd].selected_events |= SELECT_FLAG(B_SELECT_WRITE);
468 sync->set[fd].selected_events |= SELECT_FLAG(B_SELECT_ERROR);
470 if (sync->set[fd].selected_events != 0) {
471 select_fd(fd, sync->set + fd, kernel);
482 status = acquire_sem_etc(sync->sem, 1,
494 deselect_fd(fd, sync->set + fd, kernel);
505 put_select_sync(sync);
519 if (readSet && sync->set[fd].events & SELECT_FLAG(B_SELECT_READ)) {
524 && sync->set[fd].events & SELECT_FLAG(B_SELECT_WRITE)) {
529 && sync->set[fd].events & SELECT_FLAG(B_SELECT_ERROR)) {
538 put_select_sync(sync);
549 // allocate sync object
550 select_sync* sync;
551 status_t status = create_select_sync(numFDs, sync);
564 sync->set[i].selected_events = fds[i].events
566 sync->set[i].events = 0;
569 if (fd >= 0 && select_fd(fd, sync->set + i, kernel) != B_OK) {
570 sync->set[i].events = POLLNVAL;
578 status = acquire_sem_etc(sync->sem, 1,
586 deselect_fd(fds[i].fd, sync->set + i, kernel);
599 fds[i].revents = sync->set[i].events
600 & sync->set[i].selected_events;
613 put_select_sync(sync);
627 // allocate sync object
628 select_sync* sync;
629 status = create_select_sync(numInfos, sync);
641 sync->set[i].selected_events = infos[i].events
643 sync->set[i].events = 0;
647 || kSelectOps[type].select(object, sync->set + i, kernel) != B_OK) {
648 sync->set[i].events = B_EVENT_INVALID;
656 status = acquire_sem_etc(sync->sem, 1, B_CAN_INTERRUPT | flags,
666 kSelectOps[type].deselect(infos[i].object, sync->set + i, kernel);
674 infos[i].events = sync->set[i].events
675 & sync->set[i].selected_events;
684 put_select_sync(sync);
696 FUNCTION(("notify_select_events(%p (%p), 0x%x)\n", info, info->sync,
700 || info->sync == NULL
701 || info->sync->sem < B_OK)
709 return release_sem_etc(info->sync->sem, 1, B_DO_NOT_RESCHEDULE);
730 notify_select_event(struct selectsync *sync, uint8 event)
732 return notify_select_events((select_info*)sync, SELECT_FLAG(event));
740 find_select_sync_pool_entry(select_sync_pool *pool, selectsync *sync)
745 if (entry->sync == sync)
754 add_select_sync_pool_entry(select_sync_pool *pool, selectsync *sync,
758 select_sync_pool_entry *entry = find_select_sync_pool_entry(pool, sync);
764 entry->sync = sync;
777 add_select_sync_pool_entry(select_sync_pool **_pool, selectsync *sync,
791 status_t error = add_select_sync_pool_entry(pool, sync, event);
804 remove_select_sync_pool_entry(select_sync_pool **_pool, selectsync *sync,
816 if (entry->sync == sync) {
868 notify_select_event(entry->sync, event);