Skip to content

Commit 4dc0492

Browse files
authored
Merge pull request #17 from forg0ne/obj_created_chk
New option: OS_CFG_OBJ_CREATED_CHK_EN
2 parents e333ca2 + c8f5bfb commit 4dc0492

File tree

9 files changed

+24
-0
lines changed

9 files changed

+24
-0
lines changed

Cfg/Template/os_cfg.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#define OS_CFG_DYN_TICK_EN 0u /* Enable (1) or Disable (0) the Dynamic Tick */
3737
#define OS_CFG_INVALID_OS_CALLS_CHK_EN 1u /* Enable (1) or Disable (0) checks for invalid kernel calls */
3838
#define OS_CFG_OBJ_TYPE_CHK_EN 1u /* Enable (1) or Disable (0) object type checking */
39+
#define OS_CFG_OBJ_CREATED_CHK_EN 1u /* Enable (1) or Disable (0) object created checks */
3940
#define OS_CFG_TS_EN 0u /* Enable (1) or Disable (0) time stamping */
4041

4142
#define OS_CFG_PRIO_MAX 64u /* Defines the maximum number of task priorities (see OS_PRIO data type) */

Source/os.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2144,6 +2144,15 @@ OS_TICK OS_DynTickSet (OS_TICK ticks);
21442144
#endif
21452145

21462146

2147+
#ifndef OS_CFG_OBJ_CREATED_CHK_EN
2148+
#error "OS_CFG.H, Missing OS_CFG_OBJ_CREATED_CHK_EN: Allows you to include object created checks or not"
2149+
#else
2150+
#if (OS_CFG_OBJ_CREATED_CHK_EN > 0u) && (OS_OBJ_TYPE_REQ == 0u)
2151+
#error "OS_CFG.H, OS_CFG_DBG_EN or OS_CFG_OBJ_TYPE_CHK_EN must be Enabled (1) to use object created checks."
2152+
#endif
2153+
#endif
2154+
2155+
21472156
#if OS_CFG_PRIO_MAX < 8u
21482157
#error "OS_CFG.H, OS_CFG_PRIO_MAX must be >= 8"
21492158
#endif

Source/os_dbg.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ CPU_INT16U const OSDbg_MutexSize = 0u;
106106
#endif
107107

108108
CPU_INT08U const OSDbg_ObjTypeChkEn = OS_CFG_OBJ_TYPE_CHK_EN;
109+
CPU_INT08U const OSDbg_ObjCreatedChkEn = OS_CFG_OBJ_CREATED_CHK_EN;
109110

110111

111112
CPU_INT16U const OSDbg_PendListSize = sizeof(OS_PEND_LIST);
@@ -449,6 +450,7 @@ void OS_Dbg_Init (void)
449450
#endif
450451

451452
p_temp08 = (CPU_INT08U const *)&OSDbg_ObjTypeChkEn;
453+
p_temp08 = (CPU_INT08U const *)&OSDbg_ObjCreatedChkEn;
452454

453455
p_temp16 = (CPU_INT16U const *)&OSDbg_PendListSize;
454456
p_temp16 = (CPU_INT16U const *)&OSDbg_PendObjSize;

Source/os_flag.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,13 @@ void OSFlagCreate (OS_FLAG_GRP *p_grp,
9696

9797
CPU_CRITICAL_ENTER();
9898
#if (OS_OBJ_TYPE_REQ > 0u)
99+
#if (OS_CFG_OBJ_CREATED_CHK_EN > 0u)
99100
if (p_grp->Type == OS_OBJ_TYPE_FLAG) {
100101
CPU_CRITICAL_EXIT();
101102
*p_err = OS_ERR_OBJ_CREATED;
102103
return;
103104
}
105+
#endif
104106
p_grp->Type = OS_OBJ_TYPE_FLAG; /* Set to event flag group type */
105107
#endif
106108
#if (OS_CFG_DBG_EN > 0u)

Source/os_mem.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,13 @@ void OSMemCreate (OS_MEM *p_mem,
146146

147147
CPU_CRITICAL_ENTER();
148148
#if (OS_OBJ_TYPE_REQ > 0u)
149+
#if (OS_CFG_OBJ_CREATED_CHK_EN > 0u)
149150
if (p_mem->Type == OS_OBJ_TYPE_MEM) {
150151
CPU_CRITICAL_EXIT();
151152
*p_err = OS_ERR_OBJ_CREATED;
152153
return;
153154
}
155+
#endif
154156
p_mem->Type = OS_OBJ_TYPE_MEM; /* Set the type of object */
155157
#endif
156158
#if (OS_CFG_DBG_EN > 0u)

Source/os_mutex.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,13 @@ void OSMutexCreate (OS_MUTEX *p_mutex,
9595

9696
CPU_CRITICAL_ENTER();
9797
#if (OS_OBJ_TYPE_REQ > 0u)
98+
#if (OS_CFG_OBJ_CREATED_CHK_EN > 0u)
9899
if (p_mutex->Type == OS_OBJ_TYPE_MUTEX) {
99100
CPU_CRITICAL_EXIT();
100101
*p_err = OS_ERR_OBJ_CREATED;
101102
return;
102103
}
104+
#endif
103105
p_mutex->Type = OS_OBJ_TYPE_MUTEX; /* Mark the data structure as a mutex */
104106
#endif
105107
#if (OS_CFG_DBG_EN > 0u)

Source/os_q.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,13 @@ void OSQCreate (OS_Q *p_q,
105105

106106
CPU_CRITICAL_ENTER();
107107
#if (OS_OBJ_TYPE_REQ > 0u)
108+
#if (OS_CFG_OBJ_CREATED_CHK_EN > 0u)
108109
if (p_q->Type == OS_OBJ_TYPE_Q) {
109110
CPU_CRITICAL_EXIT();
110111
*p_err = OS_ERR_OBJ_CREATED;
111112
return;
112113
}
114+
#endif
113115
p_q->Type = OS_OBJ_TYPE_Q; /* Mark the data structure as a message queue */
114116
#endif
115117
#if (OS_CFG_DBG_EN > 0u)

Source/os_sem.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,13 @@ void OSSemCreate (OS_SEM *p_sem,
100100

101101
CPU_CRITICAL_ENTER();
102102
#if (OS_OBJ_TYPE_REQ > 0u)
103+
#if (OS_CFG_OBJ_CREATED_CHK_EN > 0u)
103104
if (p_sem->Type == OS_OBJ_TYPE_SEM) {
104105
CPU_CRITICAL_EXIT();
105106
*p_err = OS_ERR_OBJ_CREATED;
106107
return;
107108
}
109+
#endif
108110
p_sem->Type = OS_OBJ_TYPE_SEM; /* Mark the data structure as a semaphore */
109111
#endif
110112
p_sem->Ctr = cnt; /* Set semaphore value */

Source/os_tmr.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,13 +166,15 @@ void OSTmrCreate (OS_TMR *p_tmr,
166166

167167
p_tmr->State = OS_TMR_STATE_STOPPED; /* Initialize the timer fields */
168168
#if (OS_OBJ_TYPE_REQ > 0u)
169+
#if (OS_CFG_OBJ_CREATED_CHK_EN > 0u)
169170
if (p_tmr->Type == OS_OBJ_TYPE_TMR) {
170171
if (OSRunning == OS_STATE_OS_RUNNING) {
171172
OS_TmrUnlock();
172173
}
173174
*p_err = OS_ERR_OBJ_CREATED;
174175
return;
175176
}
177+
#endif
176178
p_tmr->Type = OS_OBJ_TYPE_TMR;
177179
#endif
178180
#if (OS_CFG_DBG_EN > 0u)

0 commit comments

Comments
 (0)