Subversion Repositories HelenOS

Rev

Rev 2336 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2336 Rev 2416
Line 34... Line 34...
34
 
34
 
35
#ifndef KERN_TIMEOUT_H_
35
#ifndef KERN_TIMEOUT_H_
36
#define KERN_TIMEOUT_H_
36
#define KERN_TIMEOUT_H_
37
 
37
 
38
#include <arch/types.h>
38
#include <arch/types.h>
-
 
39
#if defined CONFIG_TIMEOUT_AVL_TREE
-
 
40
#include <adt/avl.h>
39
#ifdef CONFIG_TIMEOUT_EXTAVL_TREE
41
#elif defined CONFIG_TIMEOUT_EXTAVL_TREE
40
#include <adt/extavl.h>
42
#include <adt/extavl.h>
-
 
43
#elif defined CONFIG_TIMEOUT_EXTAVLREL_TREE
-
 
44
#include <adt/extavlrel.h>
41
#endif
45
#else
42
#include <adt/list.h>
46
#include <adt/list.h>
-
 
47
#endif
43
#include <cpu.h>
48
#include <cpu.h>
44
 
49
 
45
typedef void (* timeout_handler_t)(void *arg);
50
typedef void (* timeout_handler_t)(void *arg);
46
 
51
 
-
 
52
 
-
 
53
#if defined CONFIG_TIMEOUT_AVL_TREE
-
 
54
 
-
 
55
typedef struct {
-
 
56
    SPINLOCK_DECLARE(lock);
-
 
57
   
-
 
58
    /**
-
 
59
     * AVL tree node structure holds information
-
 
60
     * about connections with other timeouts.
-
 
61
     */
-
 
62
    avltree_node_t node;
-
 
63
    /** Function that will be called on timeout activation. */
-
 
64
    timeout_handler_t handler;
-
 
65
    /** Argument to be passed to handler() function. */
-
 
66
    void *arg;
-
 
67
    /** On which processor is this timeout registered. */
-
 
68
    cpu_t *cpu;
-
 
69
} timeout_t;
-
 
70
 
47
#ifdef CONFIG_TIMEOUT_EXTAVL_TREE
71
#elif defined CONFIG_TIMEOUT_EXTAVL_TREE
48
 
72
 
49
typedef struct {
73
typedef struct {
50
    SPINLOCK_DECLARE(lock);
74
    SPINLOCK_DECLARE(lock);
51
   
75
   
52
    /**
76
    /**
Line 57... Line 81...
57
    /** Function that will be called on timeout activation. */
81
    /** Function that will be called on timeout activation. */
58
    timeout_handler_t handler;
82
    timeout_handler_t handler;
59
    /** Argument to be passed to handler() function. */
83
    /** Argument to be passed to handler() function. */
60
    void *arg;
84
    void *arg;
61
    /** On which processor is this timeout registered. */
85
    /** On which processor is this timeout registered. */
-
 
86
    cpu_t *cpu;
-
 
87
} timeout_t;
-
 
88
 
-
 
89
#elif defined CONFIG_TIMEOUT_EXTAVLREL_TREE
-
 
90
 
-
 
91
typedef struct {
-
 
92
    SPINLOCK_DECLARE(lock);
-
 
93
   
-
 
94
    /**
-
 
95
     * Extended AVL tree with relative keys node structure holds information
-
 
96
     * about connections with other timeouts.
-
 
97
     */
-
 
98
    extavlreltree_node_t node;
-
 
99
    /** Function that will be called on timeout activation. */
-
 
100
    timeout_handler_t handler;
-
 
101
    /** Argument to be passed to handler() function. */
-
 
102
    void *arg;
-
 
103
    /** On which processor is this timeout registered. */
62
    cpu_t *cpu;
104
    cpu_t *cpu;
63
} timeout_t;
105
} timeout_t;
64
 
106
 
65
#else
107
#else
66
 
108