callout.h revision 31470
11541Srgrimes/*- 21541Srgrimes * Copyright (c) 1990, 1993 31541Srgrimes * The Regents of the University of California. All rights reserved. 41541Srgrimes * (c) UNIX System Laboratories, Inc. 51541Srgrimes * All or some portions of this file are derived from material licensed 61541Srgrimes * to the University of California by American Telephone and Telegraph 71541Srgrimes * Co. or Unix System Laboratories, Inc. and are reproduced herein with 81541Srgrimes * the permission of UNIX System Laboratories, Inc. 91541Srgrimes * 101541Srgrimes * Redistribution and use in source and binary forms, with or without 111541Srgrimes * modification, are permitted provided that the following conditions 121541Srgrimes * are met: 131541Srgrimes * 1. Redistributions of source code must retain the above copyright 141541Srgrimes * notice, this list of conditions and the following disclaimer. 151541Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 161541Srgrimes * notice, this list of conditions and the following disclaimer in the 171541Srgrimes * documentation and/or other materials provided with the distribution. 181541Srgrimes * 3. All advertising materials mentioning features or use of this software 191541Srgrimes * must display the following acknowledgement: 201541Srgrimes * This product includes software developed by the University of 211541Srgrimes * California, Berkeley and its contributors. 221541Srgrimes * 4. Neither the name of the University nor the names of its contributors 231541Srgrimes * may be used to endorse or promote products derived from this software 241541Srgrimes * without specific prior written permission. 251541Srgrimes * 261541Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 271541Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 281541Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 291541Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 301541Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 311541Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 321541Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 331541Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 341541Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 351541Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 361541Srgrimes * SUCH DAMAGE. 371541Srgrimes * 381541Srgrimes * @(#)callout.h 8.2 (Berkeley) 1/21/94 3931470Sdg * $Id: callout.h,v 1.9 1997/09/24 16:39:27 gibbs Exp $ 401541Srgrimes */ 411541Srgrimes 422165Spaul#ifndef _SYS_CALLOUT_H_ 432165Spaul#define _SYS_CALLOUT_H_ 442165Spaul 4529683Sgibbs#include <sys/queue.h> 4629683Sgibbs 4729683SgibbsSLIST_HEAD(callout_list, callout); 4829683SgibbsTAILQ_HEAD(callout_tailq, callout); 4929683Sgibbs 501541Srgrimesstruct callout { 5129683Sgibbs union { 5229683Sgibbs SLIST_ENTRY(callout) sle; 5329683Sgibbs TAILQ_ENTRY(callout) tqe; 5429683Sgibbs } c_links; 5531470Sdg int c_time; /* ticks to the event */ 561541Srgrimes void *c_arg; /* function argument */ 571541Srgrimes void (*c_func) __P((void *)); /* function to call */ 581541Srgrimes}; 591541Srgrimes 6029683Sgibbsstruct callout_handle { 6129683Sgibbs struct callout *callout; 6229683Sgibbs}; 6329683Sgibbs 641541Srgrimes#ifdef KERNEL 6529683Sgibbsextern struct callout_list callfree; 6629683Sgibbsextern struct callout *callout; 672112Swollmanextern int ncallout; 6829683Sgibbsextern struct callout_tailq *callwheel; 6929683Sgibbsextern int callwheelsize, callwheelbits, callwheelmask; 7029683Sgibbs#endif /* KERNEL */ 712165Spaul 7229683Sgibbs#endif /* _SYS_CALLOUT_H_ */ 73