mirror of
https://git.planet-casio.com/Lephenixnoir/gint.git
synced 2024-12-29 13:03:36 +01:00
kernel: specify the return values of standard GINT_CALLs
They return 0 by default, which corresponds to TIMER_CONTINUE when used in timers. Add new *_STOP variables which return 1 (TIMER_STOP).
This commit is contained in:
parent
89cab4f68e
commit
85d30fa59b
1 changed files with 33 additions and 4 deletions
|
@ -139,17 +139,23 @@ static GINLINE int gint_call(gint_call_t cb)
|
||||||
// Predefined indirect calls
|
// Predefined indirect calls
|
||||||
//
|
//
|
||||||
// * GINT_CALL_SET(pointer_to_int) will create an indirect call that sets
|
// * GINT_CALL_SET(pointer_to_int) will create an indirect call that sets
|
||||||
// (*pointer_to_int) to 1 when invoked.
|
// (*pointer_to_int) to 1 when invoked. Returns 0.
|
||||||
//
|
//
|
||||||
// * GINT_CALL_INC(pointer_to_int) will create an indirect call that increments
|
// * GINT_CALL_INC(pointer_to_int) will create an indirect call that increments
|
||||||
// (*pointer_to_int) when invoked.
|
// (*pointer_to_int) when invoked. Returns 0.
|
||||||
|
//
|
||||||
|
// * GINT_CALL_SET_STOP(pointer_to_int) is like GINT_CALL_SET() but it returns
|
||||||
|
// 1 (TIMER_STOP) so it can be used to set a pointer just once in a timer.
|
||||||
|
//
|
||||||
|
// * GINT_CALL_INC_STOP(pointer_to_int) similarly returns 1 (TIMER_STOP).
|
||||||
//---
|
//---
|
||||||
|
|
||||||
/* GINT_CALL_SET(): Callback that sets an integer to 1
|
/* GINT_CALL_SET(): Callback that sets an integer to 1
|
||||||
This is defined as a function to make sure the pointer is to an int. */
|
This is defined as a function to make sure the pointer is to an int. */
|
||||||
static void GINT_CALL_SET_function(int volatile *pointer)
|
static int GINT_CALL_SET_function(int volatile *pointer)
|
||||||
{
|
{
|
||||||
(*pointer) = 1;
|
(*pointer) = 1;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
static GINLINE gint_call_t GINT_CALL_SET(int volatile *pointer)
|
static GINLINE gint_call_t GINT_CALL_SET(int volatile *pointer)
|
||||||
{
|
{
|
||||||
|
@ -157,13 +163,36 @@ static GINLINE gint_call_t GINT_CALL_SET(int volatile *pointer)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* GINT_CALL_INC(): Callback that increments an integer */
|
/* GINT_CALL_INC(): Callback that increments an integer */
|
||||||
static void GINT_CALL_INC_function(int volatile *pointer)
|
static int GINT_CALL_INC_function(int volatile *pointer)
|
||||||
{
|
{
|
||||||
(*pointer)++;
|
(*pointer)++;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
static GINLINE gint_call_t GINT_CALL_INC(int volatile *pointer)
|
static GINLINE gint_call_t GINT_CALL_INC(int volatile *pointer)
|
||||||
{
|
{
|
||||||
return GINT_CALL(GINT_CALL_INC_function, pointer);
|
return GINT_CALL(GINT_CALL_INC_function, pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* GINT_CALL_SET_STOP(): Same as GINT_CALL_SET(), but returns TIMER_STOP */
|
||||||
|
static int GINT_CALL_SET_STOP_function(int volatile *pointer)
|
||||||
|
{
|
||||||
|
(*pointer) = 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
static GINLINE gint_call_t GINT_CALL_SET_STOP(int volatile *pointer)
|
||||||
|
{
|
||||||
|
return GINT_CALL(GINT_CALL_SET_STOP_function, pointer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GINT_CALL_INC(): Callback that increments an integer */
|
||||||
|
static int GINT_CALL_INC_STOP_function(int volatile *pointer)
|
||||||
|
{
|
||||||
|
(*pointer)++;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
static GINLINE gint_call_t GINT_CALL_INC_STOP(int volatile *pointer)
|
||||||
|
{
|
||||||
|
return GINT_CALL(GINT_CALL_INC_STOP_function, pointer);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* GINT_DEFS_CALL */
|
#endif /* GINT_DEFS_CALL */
|
||||||
|
|
Loading…
Reference in a new issue