1*c54f35caSApple OSS Distributions /* 2*c54f35caSApple OSS Distributions * Copyright (c) 2004 Apple Computer, Inc. All rights reserved. 3*c54f35caSApple OSS Distributions * 4*c54f35caSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5*c54f35caSApple OSS Distributions * 6*c54f35caSApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7*c54f35caSApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8*c54f35caSApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9*c54f35caSApple OSS Distributions * compliance with the License. The rights granted to you under the License 10*c54f35caSApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11*c54f35caSApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12*c54f35caSApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13*c54f35caSApple OSS Distributions * terms of an Apple operating system software license agreement. 14*c54f35caSApple OSS Distributions * 15*c54f35caSApple OSS Distributions * Please obtain a copy of the License at 16*c54f35caSApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17*c54f35caSApple OSS Distributions * 18*c54f35caSApple OSS Distributions * The Original Code and all software distributed under the License are 19*c54f35caSApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20*c54f35caSApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21*c54f35caSApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22*c54f35caSApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23*c54f35caSApple OSS Distributions * Please see the License for the specific language governing rights and 24*c54f35caSApple OSS Distributions * limitations under the License. 25*c54f35caSApple OSS Distributions * 26*c54f35caSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27*c54f35caSApple OSS Distributions */ 28*c54f35caSApple OSS Distributions 29*c54f35caSApple OSS Distributions /* 30*c54f35caSApple OSS Distributions * devtimer.h 31*c54f35caSApple OSS Distributions * - timer source based on <kern/thread_call.h> 32*c54f35caSApple OSS Distributions */ 33*c54f35caSApple OSS Distributions 34*c54f35caSApple OSS Distributions 35*c54f35caSApple OSS Distributions #ifndef _NET_DEVTIMER_H 36*c54f35caSApple OSS Distributions #define _NET_DEVTIMER_H 37*c54f35caSApple OSS Distributions 38*c54f35caSApple OSS Distributions #include <sys/types.h> 39*c54f35caSApple OSS Distributions #include <sys/systm.h> 40*c54f35caSApple OSS Distributions 41*c54f35caSApple OSS Distributions #define DEVTIMER_USECS_PER_SEC (1000 * 1000) 42*c54f35caSApple OSS Distributions 43*c54f35caSApple OSS Distributions enum { 44*c54f35caSApple OSS Distributions devtimer_process_func_event_lock, 45*c54f35caSApple OSS Distributions devtimer_process_func_event_unlock, 46*c54f35caSApple OSS Distributions }; 47*c54f35caSApple OSS Distributions typedef int devtimer_process_func_event; 48*c54f35caSApple OSS Distributions 49*c54f35caSApple OSS Distributions typedef struct devtimer_s * devtimer_ref; 50*c54f35caSApple OSS Distributions typedef void (*devtimer_process_func)(devtimer_ref timer, 51*c54f35caSApple OSS Distributions devtimer_process_func_event event); 52*c54f35caSApple OSS Distributions typedef void (*devtimer_timeout_func)(void * arg0, void * arg1, void * arg2); 53*c54f35caSApple OSS Distributions 54*c54f35caSApple OSS Distributions int 55*c54f35caSApple OSS Distributions devtimer_valid(devtimer_ref timer); 56*c54f35caSApple OSS Distributions 57*c54f35caSApple OSS Distributions void 58*c54f35caSApple OSS Distributions devtimer_retain(devtimer_ref timer); 59*c54f35caSApple OSS Distributions 60*c54f35caSApple OSS Distributions void * 61*c54f35caSApple OSS Distributions devtimer_arg0(devtimer_ref timer); 62*c54f35caSApple OSS Distributions 63*c54f35caSApple OSS Distributions devtimer_ref 64*c54f35caSApple OSS Distributions devtimer_create(devtimer_process_func process_func, void * arg0); 65*c54f35caSApple OSS Distributions 66*c54f35caSApple OSS Distributions void 67*c54f35caSApple OSS Distributions devtimer_invalidate(devtimer_ref timer); 68*c54f35caSApple OSS Distributions 69*c54f35caSApple OSS Distributions void 70*c54f35caSApple OSS Distributions devtimer_release(devtimer_ref timer); 71*c54f35caSApple OSS Distributions 72*c54f35caSApple OSS Distributions void 73*c54f35caSApple OSS Distributions devtimer_set_absolute(devtimer_ref t, 74*c54f35caSApple OSS Distributions struct timeval abs_time, 75*c54f35caSApple OSS Distributions devtimer_timeout_func func, 76*c54f35caSApple OSS Distributions void * arg1, void * arg2); 77*c54f35caSApple OSS Distributions 78*c54f35caSApple OSS Distributions void 79*c54f35caSApple OSS Distributions devtimer_set_relative(devtimer_ref t, 80*c54f35caSApple OSS Distributions struct timeval rel_time, 81*c54f35caSApple OSS Distributions devtimer_timeout_func func, 82*c54f35caSApple OSS Distributions void * arg1, void * arg2); 83*c54f35caSApple OSS Distributions void 84*c54f35caSApple OSS Distributions devtimer_cancel(devtimer_ref t); 85*c54f35caSApple OSS Distributions 86*c54f35caSApple OSS Distributions int 87*c54f35caSApple OSS Distributions devtimer_enabled(devtimer_ref t); 88*c54f35caSApple OSS Distributions 89*c54f35caSApple OSS Distributions struct timeval 90*c54f35caSApple OSS Distributions devtimer_current_time(void); 91*c54f35caSApple OSS Distributions 92*c54f35caSApple OSS Distributions int32_t 93*c54f35caSApple OSS Distributions devtimer_current_secs(void); 94*c54f35caSApple OSS Distributions 95*c54f35caSApple OSS Distributions #endif /* _NET_DEVTIMER_H */ 96