blob: 7fa484a2fdd4bd06f178e4e65a830e221680b536 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
// $Id: ssx_core.c,v 1.2 2014/02/03 01:30:44 daviddu Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ssx/ssx/ssx_core.c,v $
//-----------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2013
// *! All Rights Reserved -- Property of IBM
// *! *** IBM Confidential ***
//-----------------------------------------------------------------------------
/// \file ssx_core.c
/// \brief Core routines for the SSX kernel.
///
/// The entry points in this file are routines that are expected to be needed
/// at runtime by all SSX applications. This file also serves as a place for
/// kernel global variables to be realized.
#define __SSX_CORE_C__
#include "ssx.h"
#if !SSX_TIMER_SUPPORT
/// If there is no timer support, then any call of the timer interrupt handler
/// is considered a fatal error.
void
__ssx_timer_handler()
{
SSX_PANIC(SSX_NO_TIMER_SUPPORT);
}
#endif /* SSX_TIMER_SUPPORT */
/// Initialize an SsxDeque sentinel node
///
/// \param deque The sentinel node of the deque
///
/// SSX has no way of knowing whether the \a deque is currently in use, so
/// this API must only be called on unitialized or otherwise unused sentinel
/// nodes.
///
/// \retval 0 success
///
/// \retval -SSX_INVALID_DEQUE_SENTINEL The \a deque pointer was null
int
ssx_deque_sentinel_create(SsxDeque *deque)
{
if (SSX_ERROR_CHECK_API) {
SSX_ERROR_IF(deque == 0, SSX_INVALID_DEQUE_SENTINEL);
}
deque->next = deque->previous = deque;
return 0;
}
/// Initialize an SsxDeque element
///
/// \param element Typically the SsxDeque object of a queable structure
///
/// SSX has no way of knowing whether the \a element is currently in use, so
/// this API must only be called on unitialized or otherwise unused deque
/// elements.
///
/// \retval 0 success
///
/// \retval -SSX_INVALID_DEQUE_ELEMENT The \a element pointer was null
int
ssx_deque_element_create(SsxDeque *element)
{
if (SSX_ERROR_CHECK_API) {
SSX_ERROR_IF(element == 0, SSX_INVALID_DEQUE_ELEMENT);
}
element->next = 0;
return 0;
}
#undef __SSX_CORE_C__
|