You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
559 lines
17 KiB
559 lines
17 KiB
# |
|
# For a description of the syntax of this configuration file, |
|
# see misc/tools/kconfig-language.txt. |
|
# |
|
|
|
config MSEC_PER_TICK |
|
int "Milliseconds per system timer tick" |
|
default 10 |
|
---help--- |
|
The default system timer is 100Hz or MSEC_PER_TICK=10. This setting |
|
may be defined to inform NuttX that the processor hardware is providing |
|
system timer interrupts at some interrupt interval other than 10 msec. |
|
|
|
config RR_INTERVAL |
|
int "Round robin timeslice (MSEC)" |
|
default 0 |
|
---help--- |
|
The round robin timeslice will be set this number of milliseconds; |
|
Round robin scheduling can be disabled by setting this value to zero. |
|
|
|
config SCHED_INSTRUMENTATION |
|
bool "Monitor system performance" |
|
default n |
|
---help--- |
|
Enables instrumentation in scheduler to monitor system performance. |
|
If enabled, then the board-specific logic must provide the following |
|
functions (see include/sched.h): |
|
|
|
void sched_note_start(FAR _TCB *tcb); |
|
void sched_note_stop(FAR _TCB *tcb); |
|
void sched_note_switch(FAR _TCB *pFromTcb, FAR _TCB *pToTcb); |
|
|
|
config TASK_NAME_SIZE |
|
int "Maximum task name size" |
|
default 32 |
|
---help--- |
|
Spcifies that maximum size of a task name to save in the TCB. |
|
Useful if scheduler instrumentation is selected. Set to zero to |
|
disable. |
|
|
|
config SCHED_HAVE_PARENT |
|
bool "Support parent/child task relationships" |
|
default n |
|
---help--- |
|
Remember the ID of the parent task when a new child task is |
|
created. This support enables some additional features (such as |
|
SIGCHLD) and modifies the behavior of other interfaces. For |
|
example, it makes waitpid() more standards complete by restricting |
|
the waited-for tasks to the children of the caller. Default: |
|
disabled. |
|
|
|
config SCHED_CHILD_STATUS |
|
bool "Retain child exit status" |
|
default n |
|
depends on SCHED_HAVE_PARENT |
|
---help--- |
|
If this option is selected, then the exit status of the child task |
|
will be retained after the child task exits. This option should be |
|
selected if you require knowledge of a child process' exit status. |
|
Without this setting, wait(), waitpid() or waitid() may fail. For |
|
example, if you do: |
|
|
|
1) Start child task |
|
2) Wait for exit status (using wait(), waitpid(), or waitid()). |
|
|
|
This can fail because the child task may run to completion before |
|
the wait begins. There is a non-standard work-around in this case: |
|
The above sequence will work if you disable pre-emption using |
|
sched_lock() prior to starting the child task, then re-enable pre- |
|
emption with sched_unlock() after the wait completes. This works |
|
because the child task is not permitted to run until the wait is in |
|
place. |
|
|
|
The standard solution would be to enable SCHED_CHILD_STATUS. In |
|
this case the exit status of the child task is retained after the |
|
child exits and the wait will successful obtain the child task's |
|
exit status whether it is called before the child task exits or not. |
|
|
|
Warning: If you enable this feature, then your application must |
|
either (1) take responsibility for reaping the child status with wait(), |
|
waitpid(), or waitid(), or (2) suppress retention of child status. |
|
If you do not reap the child status, then you have a memory leak and |
|
your system will eventually fail. |
|
|
|
Retention of child status can be suppressed on the parent using logic like: |
|
|
|
struct sigaction sa; |
|
|
|
sa.sa_handler = SIG_IGN; |
|
sa.sa_flags = SA_NOCLDWAIT; |
|
int ret = sigaction(SIGCHLD, &sa, NULL); |
|
|
|
config PREALLOC_CHILDSTATUS |
|
int "Number of pre-allocated child status" |
|
default 0 |
|
depends on SCHED_CHILD_STATUS |
|
---help--- |
|
To prevent runaway child status allocations and to improve |
|
allocation performance, child task exit status structures are pre- |
|
allocated when the system boots. This setting determines the number |
|
of child status structures that will be pre-allocated. If this |
|
setting is not defined or if it is defined to be zero then a value |
|
of 2*MAX_TASKS is used. |
|
|
|
Note that there cannot be more that CONFIG_MAX_TASKS tasks in total. |
|
However, the number of child status structures may need to be |
|
significantly larger because this number includes the maximum number |
|
of tasks that are running PLUS the number of tasks that have exit'ed |
|
without having their exit status reaped (via wait(), waitid(), or |
|
waitpid()). |
|
|
|
Obviously, if tasks spawn children indefinitely and never have the |
|
exit status reaped, then you may have a memory leak! If you enable |
|
the SCHED_CHILD_STATUS feature, then your application must take |
|
responsibility for either (1) reaping the child status with wait(), |
|
waitpid(), or waitid() or it must (2) suppress retention of child |
|
status. Otherwise, your system will eventually fail. |
|
|
|
Retention of child status can be suppressed on the parent using logic like: |
|
|
|
struct sigaction sa; |
|
|
|
sa.sa_handler = SIG_IGN; |
|
sa.sa_flags = SA_NOCLDWAIT; |
|
int ret = sigaction(SIGCHLD, &sa, NULL); |
|
|
|
config DEBUG_CHILDSTATUS |
|
bool "Enable Child Status Debug Output" |
|
default n |
|
depends on SCHED_CHILD_STATUS && DEBUG |
|
---help--- |
|
Very detailed... I am sure that you do not want this. |
|
|
|
config JULIAN_TIME |
|
bool "Enables Julian time conversions" |
|
default n |
|
---help--- |
|
Enables Julian time conversions |
|
|
|
config START_YEAR |
|
int "Start year" |
|
default 2013 |
|
|
|
config START_MONTH |
|
int "Start month" |
|
default 1 |
|
|
|
config START_DAY |
|
int "Start day" |
|
default 1 |
|
|
|
config DEV_CONSOLE |
|
bool "Enable /dev/console" |
|
default y |
|
---help--- |
|
Set if architecture-specific logic provides /dev/console. Enables |
|
stdout, stderr, stdin. |
|
|
|
config MUTEX_TYPES: |
|
bool "Enable mutex types" |
|
default n |
|
---help--- |
|
Set to enable support for recursive and errorcheck mutexes. Enables |
|
pthread_mutexattr_settype(). |
|
|
|
config PRIORITY_INHERITANCE |
|
bool "Enable priority inheritance " |
|
default n |
|
---help--- |
|
Set to enable support for priority inheritance on mutexes and semaphores. |
|
|
|
config SEM_PREALLOCHOLDERS |
|
int "Number of pre-allocated holders" |
|
default 16 |
|
depends on PRIORITY_INHERITANCE |
|
---help--- |
|
This setting is only used if priority inheritance is enabled. |
|
It defines the maximum number of different threads (minus one) that |
|
can take counts on a semaphore with priority inheritance support. |
|
This may be set to zero if priority inheritance is disabled OR if you |
|
are only using semaphores as mutexes (only one holder) OR if no more |
|
than two threads participate using a counting semaphore. |
|
|
|
config SEM_NNESTPRIO |
|
int "Maximum number of higher priority threads" |
|
default 16 |
|
depends on PRIORITY_INHERITANCE |
|
---help--- |
|
If priority inheritance is enabled, then this setting is the |
|
maximum number of higher priority threads (minus 1) than can be |
|
waiting for another thread to release a count on a semaphore. |
|
This value may be set to zero if no more than one thread is |
|
expected to wait for a semaphore. |
|
|
|
config FDCLONE_DISABLE |
|
bool "Disable cloning of file descriptors" |
|
default n |
|
---help--- |
|
Disable cloning of all file descriptors |
|
by task_create() when a new task is started. If set, all |
|
files/drivers will appear to be closed in the new task. |
|
|
|
config FDCLONE_STDIO |
|
bool "Disable clone file descriptors without stdio" |
|
default n |
|
---help--- |
|
Disable cloning of all but the first three file descriptors (stdin, |
|
stdout, stderr) by task_create() when a new task is started. If set, |
|
all files/drivers will appear to be closed in the new task except |
|
for stdin, stdout, and stderr. |
|
|
|
config SDCLONE_DISABLE |
|
bool "Disable cloning of socket descriptors" |
|
default n |
|
---help--- |
|
Disable cloning of all socket |
|
desciptors by task_create() when a new task is started. If |
|
set, all sockets will appear to be closed in the new task. |
|
|
|
config SCHED_WORKQUEUE |
|
bool "Enable worker thread" |
|
default n |
|
depends on !DISABLE_SIGNALS |
|
---help--- |
|
Create a dedicated "worker" thread to handle delayed processing from interrupt |
|
handlers. This feature is required for some drivers but, if there are no |
|
complaints, can be safely disabled. The worker thread also performs |
|
garbage collection -- completing any delayed memory deallocations from |
|
interrupt handlers. If the worker thread is disabled, then that clean up will |
|
be performed by the IDLE thread instead (which runs at the lowest of priority |
|
and may not be appropriate if memory reclamation is of high priority). |
|
|
|
config SCHED_WORKPRIORITY |
|
int "Worker thread priority" |
|
default 192 |
|
depends on SCHED_WORKQUEUE |
|
---help--- |
|
The execution priority of the worker thread. Default: 192 |
|
|
|
config SCHED_WORKPERIOD |
|
int "Worker thread period" |
|
default 50000 |
|
depends on SCHED_WORKQUEUE |
|
---help--- |
|
How often the worker thread checks for work in units of microseconds. |
|
Default: 50*1000 (50 MS). |
|
|
|
config SCHED_WORKSTACKSIZE |
|
int "Worker thread stack size" |
|
default 2048 |
|
depends on SCHED_WORKQUEUE |
|
---help--- |
|
The stack size allocated for the worker thread. Default: 2K. |
|
|
|
config SCHED_LPWORK |
|
bool "Enable a lower priority worker thread" |
|
default n |
|
depends on SCHED_WORKQUEUE |
|
---help--- |
|
If SCHED_WORKQUEUE is defined, then a single work queue is created by |
|
default. If SCHED_LPWORK is also defined then an additional, lower- |
|
priority work queue will also be created. This lower priority work |
|
queue is better suited for more extended processing (such as file system |
|
clean-up operations) |
|
|
|
config SCHED_LPWORKPRIORITY |
|
int "Lower priority worker thread priority" |
|
default 50 |
|
depends on SCHED_LPWORK |
|
---help--- |
|
The execution priority of the lopwer priority worker thread. Default: 192 |
|
|
|
config SCHED_LPWORKPERIOD |
|
int "Lower priority worker thread period" |
|
default 50000 |
|
depends on SCHED_LPWORK |
|
---help--- |
|
How often the lower priority worker thread checks for work in units |
|
of microseconds. Default: 50*1000 (50 MS). |
|
|
|
config SCHED_LPWORKSTACKSIZE |
|
int "Lower priority worker thread stack size" |
|
default 2048 |
|
depends on SCHED_LPWORK |
|
---help--- |
|
The stack size allocated for the lower priority worker thread. Default: 2K. |
|
|
|
config SCHED_WAITPID |
|
bool "Enable waitpid() API" |
|
default n |
|
---help--- |
|
Enables the waitpid() interface in a default, non-standard mode |
|
(non-standard in the sense that the waited for PID need not be child |
|
of the caller). If SCHED_HAVE_PARENT is also defined, then this |
|
setting will modify the behavior or waitpid() (making more spec |
|
compliant) and will enable the waitid() and wait() interfaces as |
|
well. |
|
|
|
config SCHED_STARTHOOK |
|
bool "Enable startup hook" |
|
default n |
|
---help--- |
|
Enable a non-standard, internal OS API call task_starthook(). |
|
task_starthook() registers a function that will be called on task |
|
startup before that actual task entry point is called. The |
|
starthook is useful, for example, for setting up automatic |
|
configuration of C++ constructors. |
|
|
|
config SCHED_ATEXIT |
|
bool "Enable atexit() API" |
|
default n |
|
---help--- |
|
Enables the atexit() API |
|
|
|
config SCHED_ATEXIT_MAX |
|
int "Max number of atexit() functions" |
|
default 1 |
|
depends on SCHED_ATEXIT && !SCHED_ONEXIT |
|
---help--- |
|
By default if SCHED_ATEXIT is selected, only a single atexit() function |
|
is supported. That number can be increased by defined this setting to |
|
the number that you require. |
|
|
|
If both SCHED_ONEXIT and SCHED_ATEXIT are selected, then atexit() is built |
|
on top of the on_exit() implementation. In that case, SCHED_ONEXIT_MAX |
|
determines the size of the combined number of atexit(0) and on_exit calls |
|
and SCHED_ATEXIT_MAX is not used. |
|
|
|
config SCHED_ONEXIT |
|
bool "Enable on_exit() API" |
|
default n |
|
---help--- |
|
Enables the on_exit() API |
|
|
|
config SCHED_ONEXIT_MAX |
|
int "Max number of on_exit() functions" |
|
default 1 |
|
depends on SCHED_ONEXIT |
|
---help--- |
|
By default if SCHED_ONEXIT is selected, only a single on_exit() function |
|
is supported. That number can be increased by defined this setting to the |
|
number that you require. |
|
|
|
If both SCHED_ONEXIT and SCHED_ATEXIT are selected, then atexit() is built |
|
on top of the on_exit() implementation. In that case, SCHED_ONEXIT_MAX |
|
determines the size of the combined number of atexit(0) and on_exit calls. |
|
|
|
config USER_ENTRYPOINT |
|
string "Application entry point" |
|
default "user_start" |
|
---help--- |
|
The name of the entry point for user applications. For the example |
|
applications this is of the form 'app_main' where 'app' is the application |
|
name. If not defined, USER_ENTRYPOINT defaults to "user_start." |
|
|
|
config DISABLE_OS_API |
|
bool "Disable NuttX interfaces" |
|
default y |
|
---help--- |
|
The following can be used to disable categories of |
|
APIs supported by the OS. If the compiler supports |
|
weak functions, then it should not be necessary to |
|
disable functions unless you want to restrict usage |
|
of those APIs. |
|
|
|
There are certain dependency relationships in these |
|
features. |
|
|
|
o mq_notify logic depends on signals to awaken tasks |
|
waiting for queues to become full or empty. |
|
o pthread_condtimedwait() depends on signals to wake |
|
up waiting tasks. |
|
|
|
config DISABLE_CLOCK |
|
bool "Disable clock interfaces" |
|
depends on DISABLE_OS_API |
|
default n |
|
|
|
config DISABLE_POSIX_TIMERS |
|
bool "Disable POSIX timers" |
|
depends on DISABLE_OS_API |
|
default n |
|
|
|
config DISABLE_PTHREAD |
|
bool "Disable pthread support" |
|
depends on DISABLE_OS_API |
|
default n |
|
|
|
config DISABLE_SIGNALS |
|
bool "Disable signal support" |
|
depends on DISABLE_OS_API |
|
default n |
|
|
|
config DISABLE_MQUEUE |
|
bool "Disable POSIX message queue support" |
|
depends on DISABLE_OS_API |
|
default n |
|
|
|
config DISABLE_ENVIRON |
|
bool "Disable environment variable support" |
|
depends on DISABLE_OS_API |
|
default n |
|
|
|
if !DISABLE_SIGNALS |
|
comment "Signal Numbers" |
|
|
|
config SIG_SIGUSR1 |
|
int "SIGUSR1" |
|
default 1 |
|
---help--- |
|
Value of standard user signal 1 (SIGUSR1). Default: 1 |
|
|
|
config SIG_SIGUSR2 |
|
int "SIGUSR2" |
|
default 2 |
|
---help--- |
|
Value of standard user signal 2 (SIGUSR2). Default: 2 |
|
|
|
config SIG_SIGALARM |
|
int "SIGALRM" |
|
default 3 |
|
---help--- |
|
Default the signal number used with POSIX timers (SIGALRM). |
|
Default: 3 |
|
|
|
config SIG_SIGCHLD |
|
int "SIGCHLD" |
|
default 4 |
|
depends on SCHED_HAVE_PARENT |
|
---help--- |
|
The SIGCHLD signal is sent to the parent of a child process when it |
|
exits, is interrupted (stopped), or resumes after being interrupted. |
|
Default: 4 |
|
|
|
config SIG_SIGCONDTIMEDOUT |
|
int "SIGCONDTIMEDOUT" |
|
default 16 |
|
depends on !DISABLE_PTHREAD |
|
---help--- |
|
This non-standard signal number is used the implementation of |
|
pthread_cond_timedwait(). Default 16. |
|
|
|
config SIG_SIGWORK |
|
int "SIGWORK" |
|
default 17 |
|
depends on SCHED_WORKQUEUE |
|
---help--- |
|
SIGWORK is a non-standard signal used to wake up the internal NuttX |
|
worker thread. This setting specifies the signal number that will be |
|
used for SIGWORK. Default: 17 |
|
|
|
endif |
|
|
|
comment "Sizes of configurable things (0 disables)" |
|
|
|
config MAX_TASKS |
|
int "Max number of tasks" |
|
default 32 |
|
---help--- |
|
The maximum number of simultaneously active tasks. This value must be |
|
a power of two. |
|
|
|
config MAX_TASK_ARGS |
|
int "Maximum number of task arguments" |
|
default 4 |
|
---help--- |
|
This controls the maximum number of of parameters that a task may |
|
receive (i.e., maxmum value of 'argc') |
|
|
|
config NPTHREAD_KEYS |
|
int "Maximum number of pthread keys" |
|
default 4 |
|
---help--- |
|
The number of items of thread- |
|
specific data that can be retained |
|
|
|
config NFILE_DESCRIPTORS |
|
int "Maximum number of file descriptors per task" |
|
default 16 |
|
---help--- |
|
The maximum number of file descriptors per task (one for each open) |
|
|
|
config NFILE_STREAMS |
|
int "Maximum number of FILE streams" |
|
default 16 |
|
---help--- |
|
The maximum number of streams that can be fopen'ed |
|
|
|
config NAME_MAX |
|
int "Maximum size of a file name" |
|
default 32 |
|
---help--- |
|
The maximum size of a file name. |
|
|
|
config PREALLOC_MQ_MSGS |
|
int "Number of pre-allocated messages" |
|
default 32 |
|
---help--- |
|
The number of pre-allocated message structures. The system manages |
|
a pool of preallocated message structures to minimize dynamic allocations |
|
|
|
config MQ_MAXMSGSIZE |
|
int "Maximum message size" |
|
default 32 |
|
---help--- |
|
Message structures are allocated with a fixed payload size given by this |
|
setting (does not include other message structure overhead. |
|
|
|
config MAX_WDOGPARMS |
|
int "Maximum number of watchdog parameters" |
|
default 4 |
|
---help--- |
|
Maximum number of parameters that can be passed to a watchdog handler |
|
|
|
config PREALLOC_WDOGS |
|
int "Number of pre-allocated watchdog timers" |
|
default 32 |
|
---help--- |
|
The number of pre-allocated watchdog structures. The system manages a |
|
pool of preallocated watchdog structures to minimize dynamic allocations |
|
|
|
config PREALLOC_TIMERS |
|
int "Number of pre-allocated POSIX timers" |
|
default 8 |
|
---help--- |
|
The number of pre-allocated POSIX timer structures. The system manages a |
|
pool of preallocated timer structures to minimize dynamic allocations. Set to |
|
zero for all dynamic allocations. |
|
|
|
comment "Stack and heap information" |
|
|
|
config IDLETHREAD_STACKSIZE |
|
int "Idle thread stack size" |
|
default 1024 |
|
---help--- |
|
The size of the initial stack used by the IDLE thread. The IDLE thread |
|
is the thread that (1) performs the inital boot of the system up to the |
|
point where user_start() is spawned, and (2) there after is the IDLE |
|
thread that executes only when there is no other thread ready to run. |
|
|
|
config USERMAIN_STACKSIZE |
|
int "Main thread stack size" |
|
default 2048 |
|
---help--- |
|
The size of the stack to allocate for the main user thread that begins at |
|
the user_start() entry point. |
|
|
|
config PTHREAD_STACK_MIN |
|
int "Minimum pthread stack size" |
|
default 256 |
|
---help--- |
|
Minimum pthread stack size |
|
|
|
config PTHREAD_STACK_DEFAULT |
|
int "Default pthread stack size" |
|
default 2048 |
|
---help--- |
|
Default pthread stack size |
|
|
|
|