| Age | Commit message (Collapse) | Author |
|
|
|
When thread wake up from waiting for memory, there is a chance that
there is no memory available in high pressure. So use a loop to check
again. Otherwise, there will be a NULL reference.
Commit b8bf6bef76bdabe76749c752217afbe5d24ba371 from master.
|
|
|
|
|
|
Time out result and other errors is recorded in thread->error. Dirty
error will screw up the error handling code after the thread has been
wake up.
|
|
|
|
|
|
|
|
|
|
Out side world is difficult to tell whethere there is dead thread
remaining. If rt_thread_idle_excute only do one cleanup, it's hard to
finish cleanups outside the idle thread. So let is loop and do all the
cleanups in one call.
|
|
Out side world may be interested in whether the scheduler is locked or
not. Provide an API to tell that.
|
|
|
|
kernel: use skip list to implement timer list
|
|
make sure the device is in STREAM mode when used by rt_kprintf.
|
|
Mutex has the idea of ownership, only the thread which owns the mutex
can release it. So rt_mutex_release could only be called in thread
context. Add a debug guard to it.
|
|
Skip list is a "random" data structure that in high possibilities it
would get O(log(N)) time complexity in inserting while the old list get
O(N). Forthermore, when set RT_TIMER_SKIP_LIST_LEVEL to 1, it will just
the same as the old double linked list, both in time and space
complexity.
Benchmarks shows that when RT_TIMER_SKIP_LIST_LEVEL is 3, the average
time of random insertion of new timer is about 2 times faster than the
old timer when there are 100 timers and 3 times faster when there are
200 timers.
However, it restores the deprecated funcion rt_system_timer_init. BSPs
must invoke it upon system startup.
|
|
In thread context means: 1) the scheduler has been started; 2) not in
interrupt context. It is more stronger than RT_DEBUG_NOT_IN_INTERRUPT.
With this commit, you will catch the error on situations like taking
mutex before scheduling instead of crashing on NULL pointer reference.
|
|
rt_kprintf.
|
|
vsnprintf is a common string function that could be used in many places.
Using both vsnprintf in libc and vsnprintf in the RTT could make a
bigger image. Moreover, if newlib is not enabled when compiling with
GCC, referencing vsnprintf will lead to link error:
.../arm-none-eabi/lib/armv7-ar/thumb/softfp/libc.a(lib_a-sbrkr.o):
In function `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
collect2: error: ld returned 1 exit status
Using rt_vsnprintf could avoid such problem.
|
|
Either RT_EVENT_FLAG_AND or RT_EVENT_FLAG_OR should be set in the option
flag. If none of them is present, the waiting thread will never be
resumed.
|
|
When print the thread names, we should use "%.*s" instead of bare "%s".
|
|
|
|
When realloc a bigger space and the next node is free and big enough, we
should directly relocate the next node instead of doing alloc/memcpy.
The new method not only faster in this cases, it would avoid memory
fragment as well.
|
|
|
|
This is a simple work around to the current device stack design. A
ref_count could let different modules to open/close the same device
independently without interfere others in some degree.
But there is still some data shared between the modules, like flag,
open_flag and user_data. Moreover, it won't yield an error if A open a
device, and B read from it before open it in B. Maybe alloc a new handle
in rt_device_open will be the ultimate solution. But that is much bigger
change and we may leave it to future development.
|
|
convert Tabs to spaces
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006 - 2013 Copyright by rt-thread team
|
|
|
|
If two timer will timeout at the same tick, the one started later will
be called later. I've tested the patch on simulator and it _seems_ OK.
Reported-by: xdzy on the forum and delin17 <[email protected]>
|
|
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2569 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
system default memory heap.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2554 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2527 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2526 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2525 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2524 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2523 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2522 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2521 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2520 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2519 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2507 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2506 bbd45198-f89e-11dd-88c7-29a3b14d5316
|
|
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2505 bbd45198-f89e-11dd-88c7-29a3b14d5316
|