(linenum→info "unix/slp.c:2238")

emacs/22.1/src/atimer.h

    1: /* Asynchronous timers.
    2:    Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
    3:                  2006, 2007  Free Software Foundation, Inc.
    4: 
    5: This file is part of GNU Emacs.
    6: 
    7: GNU Emacs is free software; you can redistribute it and/or modify
    8: it under the terms of the GNU General Public License as published by
    9: the Free Software Foundation; either version 2, or (at your option)
   10: any later version.
   11: 
   12: GNU Emacs is distributed in the hope that it will be useful,
   13: but WITHOUT ANY WARRANTY; without even the implied warranty of
   14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   15: GNU General Public License for more details.
   16: 
   17: You should have received a copy of the GNU General Public License
   18: along with GNU Emacs; see the file COPYING.  If not, write to
   19: the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   20: Boston, MA 02110-1301, USA.  */
   21: 
   22: #ifndef EMACS_ATIMER_H
   23: #define EMACS_ATIMER_H
   24: 
   25: /* Declare the prototype for a general external function.  */
   26: #if defined (PROTOTYPES) || defined (WINDOWSNT)
   27: #define P_(proto) proto
   28: #else
   29: #define P_(proto) ()
   30: #endif
   31: 
   32: #include "systime.h"            /* for EMACS_TIME */
   33: 
   34: /* Forward declaration.  */
   35: 
   36: struct atimer;
   37: 
   38: /* Types of timers.  */
   39: 
   40: enum atimer_type
   41: {
   42:   /* Timer is ripe at some absolute time.  */
   43:   ATIMER_ABSOLUTE,
   44: 
   45:   /* Timer is ripe at now plus an offset.  */
   46:   ATIMER_RELATIVE,
   47: 
   48:   /* Timer runs continously.  */
   49:   ATIMER_CONTINUOUS
   50: };
   51: 
   52: /* Type of timer callback functions.  */
   53: 
   54: typedef void (* atimer_callback) P_ ((struct atimer *timer));
   55: 
   56: /* Structure describing an asynchronous timer.  */
   57: 
   58: struct atimer
   59: {
   60:   /* The type of this timer.  */
   61:   enum atimer_type type;
   62: 
   63:   /* Time when this timer is ripe.  */
   64:   EMACS_TIME expiration;
   65: 
   66:   /* Interval of this timer.  */
   67:   EMACS_TIME interval;
   68: 
   69:   /* Function to call when timer is ripe.  Interrupt input is
   70:      guaranteed to not be blocked when this function is called.  */
   71:   atimer_callback fn;
   72: 
   73:   /* Additional user-specified data to pass to FN.  */
   74:   void *client_data;
   75: 
   76:   /* Next in list of active or free atimers.  */
   77:   struct atimer *next;
   78: };
   79: 
   80: /* Function prototypes.  */
   81: 
   82: struct atimer *start_atimer P_ ((enum atimer_type, EMACS_TIME,
   83:                                  atimer_callback, void *));
   84: void cancel_atimer P_ ((struct atimer *));
   85: void do_pending_atimers P_ ((void));
   86: void init_atimer P_ ((void));
   87: void turn_on_atimers P_ ((int));
   88: void stop_other_atimers P_ ((struct atimer *));
   89: void run_all_atimers P_ ((void));
   90: Lisp_Object unwind_stop_other_atimers P_ ((Lisp_Object));
   91: 
   92: #endif /* EMACS_ATIMER_H */
   93: 
   94: /* arch-tag: 02c7c1c8-45bd-4222-b874-4ca44662f60b
   95:    (do not change this comment) */
Syntax (Markdown)