示例#1
0
文件: input.c 项目: jiangxilong/kiwi
/** Signal that an input device event is being waited for.
 * @param _device	Device to wait for.
 * @param data		Handle-specific data pointer (unused).
 * @param event		Event to wait for.
 * @param sync		Synchronisation pointer.
 * @return		Status code describing result of the operation. */
static status_t input_device_wait(device_t *_device, void *data, int event, void *sync) {
	input_device_t *device = _device->data;

	switch(event) {
	case DEVICE_EVENT_READABLE:
		if(semaphore_count(&device->sem)) {
			object_wait_signal(sync);
		} else {
			notifier_register(&device->data_notifier, object_wait_notifier, sync);
		}
		return STATUS_SUCCESS;
	default:
		return STATUS_INVALID_EVENT;
	}
}
示例#2
0
文件: object.c 项目: Ted-Chang/matrix
void object_wait_notifier(void *data)
{
	object_wait_signal(data);
}