Ville Juven
dc2b2dcb3f
sched/env: Check for incoming parameter validity in unsetenv()
...
Something the function did not do, check the incoming parameter is vlaid
2022-06-14 10:39:52 +03:00
Ville Juven
1b32fc1642
sched/env: Fix the return value of unsetenv()
...
If the environment variable does not exist, the function succeeds, as
defined by POSIX.
2022-06-14 10:39:52 +03:00
chao.an
7c12e5281e
sched/mqueue: replace inline linklist to improve performance
...
Signed-off-by: chao.an <anchao@xiaomi.com>
2022-06-12 00:34:05 +08:00
chao.an
d09dc08eab
sched/mqueue: do sanity check if DEBUG_FEATURES is enabled
...
Signed-off-by: chao.an <anchao@xiaomi.com>
2022-06-11 12:42:47 -03:00
chao.an
be33d66c05
sched/mqueue: minor code tuning of message queue
...
1. remove unnecessary temporary variables
2. adjust the protection scope of the critical section
Signed-off-by: chao.an <anchao@xiaomi.com>
2022-06-11 14:51:46 +08:00
chao.an
8da798926d
sched/mqueue: configurable mqueue notification
...
Add a configuration to disable the mqueue notification mechanism
Signed-off-by: chao.an <anchao@xiaomi.com>
2022-06-11 14:51:09 +08:00
chao.an
f5d4571abc
sched/mqueue: remove sched_lock to improve performance
...
remove the sched_lock/unlock to improve the performance by 18%
mq_send Flow Cycle Count
mq_send Origin Optimized
|
->nxmq_send 24 24
|
->file_mq_send 209 209
|
|->sched_lock 243 N/A <-
|->nxmq_do_send 391 348
| |
| |->sched_lock 434 N/A <-
| |->up_unblock_task 545 459
| ->sched_unlock 675 N/A <-
|
->sched_unlock 684 N/A <-
|
->up_release_pending 701 N/A
|
->arm_switchcontext 856 610
mq_receive
|
->arm_fullcontextrestore 1375 1133
|
->up_block_task 1375 1133
|
->nxmq_wait_receive 1530 1288
|
->file_mq_receive 1606 1310
|
->nxmq_receive 1616 1320
|
->mq_receive 1628 1332 - 18%
Signed-off-by: chao.an <anchao@xiaomi.com>
2022-06-10 07:23:42 +09:00
Xiang Xiao
11c8f3125d
sched/tls: Wrap up_info_size into tls_info_size
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-06-08 19:07:33 +09:00
Xiang Xiao
8543df7e4c
sched/init: Initialize the idle thread local storage by tls_init_info
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-06-08 19:07:33 +09:00
Xiang Xiao
01c8bebf58
sched/tls: Add task_init_info and task_uninit_info
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-06-03 23:56:50 +03:00
Xiang Xiao
47b707bbf8
sched/tls: Add tls_init_info and tls_dup_info
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-06-03 23:56:50 +03:00
Xiang Xiao
3e32b605fe
libc/tls: Make tls_get_info as the pulibc function instead up_tls_info
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-06-03 23:56:50 +03:00
Xiang Xiao
33a6aa2f48
sched/tls: Don't compensate the tls size to the stack size
...
it isn't good to change the stack size passed by caller
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-06-03 23:56:50 +03:00
chao.an
5f46a21c25
signal: add define of SIGHUP/SIGTTIN
...
Signed-off-by: chao.an <anchao@xiaomi.com>
2022-06-03 12:50:14 +08:00
zhuyanlin
656f851f20
cpuload: use correct pm cpuload tick.
...
Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
Signed-off-by: ligd <liguiding1@xiaomi.com>
2022-05-31 07:57:43 +03:00
Xiang Xiao
3b136771ff
sched: Move the call of pthread_mutex_inconsistent to nxtask_recover
...
to avoid it spread around all possible exit path
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-27 09:39:09 +03:00
Xiang Xiao
feb54fc272
sched/pthread: Should call up_exit in pthread_exit
...
since _exit may kill all sibling thread when
HAVE_GROUP_MEMBERS equal true. Regressed by:
commit 622677d4a1
Author: Ville Juven <ville.juven@unikie.com>
Date: Mon May 2 15:15:06 2022 +0300
libc: Implement exit, atexit, on_exit and cxa_exit on the user side
For CONFIG_BUILD_KERNEL using the sched/task/task_exithook implementation
will just not work. It calls user code with kernel privileges which is
a bit of a security issue.
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-26 08:16:46 +03:00
Ville Juven
a54c3d13f9
sched: Remove SCHED_ATEXIT / SCHED_ONEXIT
...
Remove the kernel side implementations altogether. These will be
replaced by user land implementations.
2022-05-25 15:28:43 +08:00
Ville Juven
622677d4a1
libc: Implement exit, atexit, on_exit and cxa_exit on the user side
...
For CONFIG_BUILD_KERNEL using the sched/task/task_exithook implementation
will just not work. It calls user code with kernel privileges which is
a bit of a security issue.
2022-05-25 15:28:43 +08:00
Xiang Xiao
efc863217b
Fix error: converting the result of '<<' to a boolean always evaluates to true
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-19 23:23:01 +03:00
Xiang Xiao
5b0b4bd586
sched/wdog: Change the return type of wd_gettime from int to sclock_t
...
to handle 64bits sclock_t correctly
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-19 23:21:54 +03:00
jihandong
89338a6914
sched/pthread/pthread_condclockwait.c: follow POSIX.
...
pthread_condclockwait() can not distinguish between interrupt and timeout,
which cause these API not follow POSIX:
pthread_rwlock_timedrdlock()
pthread_rwlock_timedwrlock()
pthread_condtimedwait()
POSIX:
Upon return from the signal handler the thread resumes waiting for
the condition variable as if it wasnot interrupted
These functions shall not return an error code of [EINTR].
Replacing nxsem_wait() with nxsem_clockwait_uninterruptible() can solve it.
Signed-off-by: jihandong <jihandong@xiaomi.com>
2022-05-19 14:57:33 +08:00
zhuyanlin
1c977e97d2
pthread_mutexinit: fix deadcode in pthread_mutexinit
...
Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
2022-05-16 10:20:52 +03:00
zhuyanlin
3bac0d8367
timer:settime: check return value of clock_abstime2ticks
...
Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
2022-05-16 10:20:52 +03:00
Xiang Xiao
1fb8c13e5e
Replace nxsem_timedwait_uninterruptible with nxsem_tickwait_uninterruptible
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-15 13:55:58 +03:00
Xiang Xiao
22e4f1c59a
sched: Remove start from nxsem_tickwait[_uninterruptible]
...
to simplify both caller and callee
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-15 13:55:58 +03:00
Xiang Xiao
08002a0a38
sched: Replace pthread_sem_take with nxsem_wait_uninterruptible
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-14 20:47:34 +03:00
Xiang Xiao
9072eecc30
sched/wqueue: Change the return type of work_notifier_teardown to void
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-14 00:35:29 +03:00
Ville Juven
5bcd1dbb64
sched: Remove task_restart in case of CONFIG_BUILD_KERNEL
...
Same treatment as task_delete, this is not usable in kernel build
either.
2022-05-12 22:08:19 +08:00
Ville Juven
b1d92159fa
sched: Remove task_delete in case of CONFIG_BUILD_KERNEL
...
Deleting a task from another task's context will not do, so shut
this gate down for BUILD_KERNEL. In this case if a task wants another
task to terminate, it must ask the other task to politely kill itself.
Note: kthreads still need this, also, the kernel can delete a task
without asking.
2022-05-12 03:27:25 +08:00
Xiang Xiao
b907a1fec7
cpuload: Support the internal computation in the tickless mode
...
just like how the same thing done in nxsched_process_timer
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-10 21:21:19 +08:00
Xiang Xiao
f47cf7ba04
sched: Add nxsched_process_cpuload_ticks prototype to sched/sched/sched.h
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-10 21:21:19 +08:00
zhuyanlin
de3bb757d2
sched:sched_cpuload_period: add time compensate for idle task
...
Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
2022-05-10 21:21:19 +08:00
zhuyanlin
c75f4b62e0
sched:sched_cpuload_oneshot: add time compensate for idle task
...
Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
2022-05-10 21:21:19 +08:00
zhuyanlin
6facf18a01
cpuload: nxsched_cpu_process_cpuload: add ticks parameter
...
Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
2022-05-10 21:21:19 +08:00
zhuyanlin
45fe3fb4c6
sched:cpuload_period: add pm callbacks
...
Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
2022-05-10 21:21:19 +08:00
zhuyanlin
1c2583eaad
sched:cpuload_oneshot: add pm callcacks
...
Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
2022-05-10 21:21:19 +08:00
chao.an
f5b3d5a014
sched/note: fix build break
...
1. fix typo spilock -> spinlock
2. fix build break
sched/sched_note.c: In function ‘note_spincommon’:
sched/sched_note.c:435:3: error: aggregate value used where an integer was expected
435 | note.nsp_value = (uint8_t)*spinlock;
| ^~~~
Signed-off-by: chao.an <anchao@xiaomi.com>
2022-05-09 12:27:57 +08:00
Oki Minabe
22787ee109
sched/group: addrenv: allocate current group for each cpu
...
Summary:
- In case of SMP and ADDRENV, allocate current group for each cpu
- g_pid_current holds pid of the group and uses for addrenv switching
- allocate g_group_current for each cpu in stead of g_pid_current
- g_group_current is the array that pointed to the current task_group_s struct
Impact:
- ADDRENV=y and SMP=y
Testing:
- sabre-6quad:smp w/ qemu
- sabre-6quad:knsh w/ qemu
- sabre-6quad:knsh_smp w/ qemu (WIP)
Signed-off-by: Oki Minabe <minabe.oki@gmail.com>
2022-05-08 20:34:31 +03:00
anjiahao
3dc07ac6b4
sched:fix mq_timedsend describe
...
Signed-off-by: anjiahao <anjiahao@xiaomi.com>
2022-04-27 02:09:18 +08:00
Petro Karashchenko
1b4d8b3734
sched: remove DEBUGASSERT from nx_waitpid
...
Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com>
2022-04-22 15:06:26 -03:00
Xiang Xiao
55b5561fdb
sched/task: Implement execle and execve
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-04-22 10:40:31 +03:00
Xiang Xiao
76803f4a07
sched/environ: Replace get_environ_ptr with environ
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-04-21 22:55:47 +03:00
Xiang Xiao
9794068a9c
sched/environ: Remove the unneeded cast in env_dup
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-04-21 22:55:47 +03:00
Xiang Xiao
ce49c80976
sched/task: Correct the comment about environment variable
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-04-21 22:55:47 +03:00
Ville Juven
4c1b66246d
env_dup: Fix copying of env between address environments
...
If address environments are in use, it is not possible to simply
memcpy from from one process to another. The current implementation
of env_dup does precisely this and thus, it fails at once when it is
attempted between two user processes.
The solution is to use the kernel's heap as an intermediate buffer.
This is a simple, effective and common way to do a fork().
Obviously this is not needed for kernel processes.
2022-04-21 18:38:37 +08:00
Xiang Xiao
2c82bef702
sched/environ: Refine the environment variables storage layout
...
to confirm the standard and then implement get_environ_ptr correctly
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-04-18 10:33:37 +03:00
Petro Karashchenko
ebffcdc992
semaphore: fix usage of NXSEM_INITIALIZER
...
Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com>
2022-04-17 11:38:34 +08:00
Xiang Xiao
701bbaac74
sched/environ: Ensure tg_envp terminated by double '\0'
...
so we can compute the whole environ string length from it
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-04-14 07:49:00 +03:00
anjiahao
a191d9bc3c
sched/pthread_create:fix bug,delete data_sem
...
if a pthread set attr is detach,and when call pthread_create,
new thread exit quikly,new thread's tcb be free,then pthread_create
use new thread's tcb will crash.
Signed-off-by: anjiahao <anjiahao@xiaomi.com>
2022-04-14 01:42:16 +08:00