emacs/src/atimer.h
Paul Eggert bc511a64f6 Prefer HTTPS to FTP and HTTP in documentation
Most of this change is to boilerplate commentary such as license URLs.
This change was prompted by ftp://ftp.gnu.org's going-away party,
planned for November.  Change these FTP URLs to https://ftp.gnu.org
instead.  Make similar changes for URLs to other organizations moving
away from FTP.  Also, change HTTP to HTTPS for URLs to gnu.org and
fsf.org when this works, as this will further help defend against
man-in-the-middle attacks (for this part I omitted the MS-DOS and
MS-Windows sources and the test tarballs to keep the workload down).
HTTPS is not fully working to lists.gnu.org so I left those URLs alone
for now.
2017-09-13 15:54:37 -07:00

84 lines
2.1 KiB
C

/* Asynchronous timers.
Copyright (C) 2000-2017 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#ifndef EMACS_ATIMER_H
#define EMACS_ATIMER_H
#include <time.h>
/* Forward declaration. */
struct atimer;
/* Types of timers. */
enum atimer_type
{
/* Timer is ripe at some absolute time. */
ATIMER_ABSOLUTE,
/* Timer is ripe at now plus an offset. */
ATIMER_RELATIVE,
/* Timer runs continuously. */
ATIMER_CONTINUOUS
};
/* Type of timer callback functions. */
typedef void (* atimer_callback) (struct atimer *timer);
/* Structure describing an asynchronous timer. */
struct atimer
{
/* The type of this timer. */
enum atimer_type type;
/* Time when this timer is ripe. */
struct timespec expiration;
/* Interval of this timer. */
struct timespec interval;
/* Function to call when timer is ripe. Interrupt input is
guaranteed to not be blocked when this function is called. */
atimer_callback fn;
/* Additional user-specified data to pass to FN. */
void *client_data;
/* Next in list of active or free atimers. */
struct atimer *next;
};
/* Function prototypes. */
struct atimer *start_atimer (enum atimer_type, struct timespec,
atimer_callback, void *);
void cancel_atimer (struct atimer *);
void do_pending_atimers (void);
void init_atimer (void);
void turn_on_atimers (bool);
void stop_other_atimers (struct atimer *);
void run_all_atimers (void);
#ifdef HAVE_TIMERFD
void timerfd_callback (int, void *);
#endif
#endif /* EMACS_ATIMER_H */