Browse Source

waitpid(): Move some logic inside of a critical section

git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@5054 7fd9a85b-ad96-42d3-883c-3090e2eb8679
sbg
patacongo 13 years ago
parent
commit
61fccacd85
  1. 2
      nuttx/ChangeLog
  2. 3
      nuttx/sched/sched_waitpid.c

2
nuttx/ChangeLog

@ -3183,3 +3183,5 @@
Fix some strange (and probably wrong) list handling when Fix some strange (and probably wrong) list handling when
CONFIG_PRIORITY_INHERITANCE and CONFIG_SEM_PREALLOCHOLDERS are defined. CONFIG_PRIORITY_INHERITANCE and CONFIG_SEM_PREALLOCHOLDERS are defined.
This list handling was probably causing errors reported by Mike Smith This list handling was probably causing errors reported by Mike Smith
* sched/sched_waitpid.c: Fix a possible issue with logic logic that
should be brought into a critical section (suggested by Mike Smith)

3
nuttx/sched/sched_waitpid.c

@ -178,7 +178,7 @@
pid_t waitpid(pid_t pid, int *stat_loc, int options) pid_t waitpid(pid_t pid, int *stat_loc, int options)
{ {
_TCB *tcb = sched_gettcb(pid); _TCB *tcb;
bool mystat; bool mystat;
int err; int err;
int ret; int ret;
@ -186,6 +186,7 @@ pid_t waitpid(pid_t pid, int *stat_loc, int options)
/* Disable pre-emption so that nothing changes in the following tests */ /* Disable pre-emption so that nothing changes in the following tests */
sched_lock(); sched_lock();
tcb = sched_gettcb(pid);
if (!tcb) if (!tcb)
{ {
err = ECHILD; err = ECHILD;

Loading…
Cancel
Save