aboutsummaryrefslogtreecommitdiffstats
path: root/os
diff options
context:
space:
mode:
Diffstat (limited to 'os')
-rw-r--r--os/rt/include/chregistry.h25
-rw-r--r--os/rt/src/chsys.c12
-rw-r--r--os/various/lwip_bindings/arch/sys_arch.c27
-rw-r--r--os/various/lwip_bindings/arch/sys_arch.h2
-rw-r--r--os/various/lwip_bindings/lwipthread.h2
5 files changed, 53 insertions, 15 deletions
diff --git a/os/rt/include/chregistry.h b/os/rt/include/chregistry.h
index ca90f26dd..cfec32eeb 100644
--- a/os/rt/include/chregistry.h
+++ b/os/rt/include/chregistry.h
@@ -148,11 +148,8 @@ extern "C" {
* @return Thread name as a zero terminated string.
* @retval NULL if the thread name has not been set.
*
- * @iclass
*/
-static inline const char *chRegGetThreadNameI(thread_t *tp) {
-
- chDbgCheckClassI();
+static inline const char *chRegGetThreadNameX(thread_t *tp) {
#if CH_CFG_USE_REGISTRY == TRUE
return tp->p_name;
@@ -162,6 +159,26 @@ static inline const char *chRegGetThreadNameI(thread_t *tp) {
#endif
}
+/**
+ * @brief Changes the name of the specified thread.
+ * @pre This function only sets the name if the option
+ * @p CH_CFG_USE_REGISTRY is enabled else it does
+ * nothing.
+ *
+ * @param[in] tp pointer to the thread
+ * @param[in] name name to be set
+ *
+ * @xclass
+ */
+static inline void chRegSetThreadNameX(thread_t *tp, const char *name) {
+
+#if CH_CFG_USE_REGISTRY == TRUE
+ tp->p_name = name;
+#else
+ (void)tp;
+ (void)name;
+#endif
+}
#endif /* CH_CFG_USE_REGISTRY == TRUE */
#endif /* _CHREGISTRY_H_ */
diff --git a/os/rt/src/chsys.c b/os/rt/src/chsys.c
index 5e1b0dba7..a76fb7c65 100644
--- a/os/rt/src/chsys.c
+++ b/os/rt/src/chsys.c
@@ -65,7 +65,7 @@
static void _idle_thread(void *p) {
(void)p;
- chRegSetThreadName("idle");
+
while (true) {
/*lint -save -e522 [2.2] Apparently no side effects because it contains
an asm instruction.*/
@@ -135,11 +135,17 @@ void chSysInit(void) {
chRegSetThreadName((const char *)&ch_debug);
#if CH_CFG_NO_IDLE_THREAD == FALSE
+ {
/* This thread has the lowest priority in the system, its role is just to
serve interrupts in its context while keeping the lowest energy saving
mode compatible with the system status.*/
- (void) chThdCreateStatic(ch.idle_thread_wa, sizeof(ch.idle_thread_wa),
- IDLEPRIO, (tfunc_t)_idle_thread, NULL);
+ thread_t *tp = chThdCreateStatic(ch.idle_thread_wa,
+ sizeof(ch.idle_thread_wa),
+ IDLEPRIO,
+ (tfunc_t)_idle_thread,
+ NULL);
+ chRegSetThreadNameX(tp, "idle");
+ }
#endif
}
diff --git a/os/various/lwip_bindings/arch/sys_arch.c b/os/various/lwip_bindings/arch/sys_arch.c
index 47e8c70a0..835d6f5c5 100644
--- a/os/various/lwip_bindings/arch/sys_arch.c
+++ b/os/various/lwip_bindings/arch/sys_arch.c
@@ -202,28 +202,43 @@ void sys_mbox_set_invalid(sys_mbox_t *mbox) {
sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread,
void *arg, int stacksize, int prio) {
-
size_t wsz;
void *wsp;
+ syssts_t sts;
+ thread_t *tp;
(void)name;
wsz = THD_WORKING_AREA_SIZE(stacksize);
wsp = chCoreAlloc(wsz);
if (wsp == NULL)
return NULL;
- return (sys_thread_t)chThdCreateStatic(wsp, wsz, prio, (tfunc_t)thread, arg);
+
+#if CH_DBG_FILL_THREADS == TRUE
+ _thread_memfill((uint8_t *)wsp,
+ (uint8_t *)wsp + sizeof(thread_t),
+ CH_DBG_THREAD_FILL_VALUE);
+ _thread_memfill((uint8_t *)wsp + sizeof(thread_t),
+ (uint8_t *)wsp + wsz,
+ CH_DBG_STACK_FILL_VALUE);
+#endif
+
+ sts = chSysGetStatusAndLockX();
+ tp = chThdCreateI(wsp, wsz, prio, (tfunc_t)thread, arg);
+ chRegSetThreadNameX(tp, name);
+ chThdStartI(tp);
+ chSysRestoreStatusX(sts);
+
+ return (sys_thread_t)tp;
}
sys_prot_t sys_arch_protect(void) {
- osalSysLock();
- return 0;
+ return chSysGetStatusAndLockX();
}
void sys_arch_unprotect(sys_prot_t pval) {
- (void)pval;
- osalSysUnlock();
+ osalSysRestoreStatusX((syssts_t)pval);
}
u32_t sys_now(void) {
diff --git a/os/various/lwip_bindings/arch/sys_arch.h b/os/various/lwip_bindings/arch/sys_arch.h
index 2eb0bb652..dd1a80ee4 100644
--- a/os/various/lwip_bindings/arch/sys_arch.h
+++ b/os/various/lwip_bindings/arch/sys_arch.h
@@ -56,7 +56,7 @@
typedef semaphore_t * sys_sem_t;
typedef mailbox_t * sys_mbox_t;
typedef thread_t * sys_thread_t;
-typedef int sys_prot_t;
+typedef syssts_t sys_prot_t;
#define SYS_MBOX_NULL (mailbox_t *)0
#define SYS_THREAD_NULL (thread_t *)0
diff --git a/os/various/lwip_bindings/lwipthread.h b/os/various/lwip_bindings/lwipthread.h
index d69323e64..e9b7367a0 100644
--- a/os/various/lwip_bindings/lwipthread.h
+++ b/os/various/lwip_bindings/lwipthread.h
@@ -43,7 +43,7 @@
/** @brief IP Address. */
#if !defined(LWIP_IPADDR) || defined(__DOXYGEN__)
-#define LWIP_IPADDR(p) IP4_ADDR(p, 192, 168, 1, 20)
+#define LWIP_IPADDR(p) IP4_ADDR(p, 192, 168, 1, 10)
#endif
/** @brief IP Gateway. */