| /**************************************************************************** |
| * sched/timer/timer.h |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. The |
| * ASF licenses this file to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance with the |
| * License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations |
| * under the License. |
| * |
| ****************************************************************************/ |
| |
| #ifndef __SCHED_TIMER_TIMER_H |
| #define __SCHED_TIMER_TIMER_H |
| |
| /**************************************************************************** |
| * Included Files |
| ****************************************************************************/ |
| |
| #include <nuttx/config.h> |
| |
| #include <sys/types.h> |
| #include <stdint.h> |
| |
| #include <nuttx/compiler.h> |
| #include <nuttx/signal.h> |
| #include <nuttx/wdog.h> |
| |
| #ifndef CONFIG_DISABLE_POSIX_TIMERS |
| |
| /**************************************************************************** |
| * Pre-processor Definitions |
| ****************************************************************************/ |
| |
| #define PT_FLAGS_PREALLOCATED 0x01 /* Timer comes from a pool of preallocated timers */ |
| |
| /**************************************************************************** |
| * Public Types |
| ****************************************************************************/ |
| |
| /* This structure represents one POSIX timer */ |
| |
| struct posix_timer_s |
| { |
| FAR struct posix_timer_s *flink; |
| |
| clockid_t pt_clock; /* Specifies the clock to use as the timing base. */ |
| uint8_t pt_flags; /* See PT_FLAGS_* definitions */ |
| uint8_t pt_crefs; /* Reference count */ |
| pid_t pt_owner; /* Creator of timer */ |
| int pt_delay; /* If non-zero, used to reset repetitive timers */ |
| struct wdog_s pt_wdog; /* The watchdog that provides the timing */ |
| struct sigevent pt_event; /* Notification information */ |
| struct sigwork_s pt_work; |
| }; |
| |
| /**************************************************************************** |
| * Public Data |
| ****************************************************************************/ |
| |
| #if CONFIG_PREALLOC_TIMERS > 0 |
| /* This is a list of free, preallocated timer structures */ |
| |
| extern volatile sq_queue_t g_freetimers; |
| #endif |
| |
| /* This is a list of instantiated timer structures -- active and inactive. |
| * The timers are place on this list by timer_create() and removed from the |
| * list by timer_delete() or when the owning thread exits. |
| */ |
| |
| extern volatile sq_queue_t g_alloctimers; |
| |
| /**************************************************************************** |
| * Public Function Prototypes |
| ****************************************************************************/ |
| |
| void timer_initialize(void); |
| void timer_deleteall(pid_t pid); |
| int timer_release(FAR struct posix_timer_s *timer); |
| FAR struct posix_timer_s *timer_gethandle(timer_t timerid); |
| |
| #endif /* CONFIG_DISABLE_POSIX_TIMERS */ |
| #endif /* __SCHED_TIMER_TIMER_H */ |