yinshengkai
65dc1fe0fc
mm: add kmm/umm_memdump
...
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
2022-10-29 11:35:27 +08:00
YAMAMOTO Takashi
f2bc4555bb
kmalloc.h: Add kmm_heapmember for !CONFIG_MM_KERNEL_HEAP case
2022-05-20 21:16:42 +08:00
YAMAMOTO Takashi
de27cfeec7
kmalloc.h: Remove extra semicolons
2022-05-20 21:13:21 +08:00
Ville Juven
50578dc501
Fix the initial idle tasks environment
...
- User mode allocator was used for setting up the environment. This
works in flat mode and probably in protected mode as well, as there
is always a a single user allocator present
- This does not work in kernel mode, where each user task has its own
heap allocator. Also, when the idle tasks environment is being set,
no allocator is ready and the system crashes at once.
Fix this by using the group allocators instead:
- Idle task is a kernel task, so its group is privileged
- Add group_realloc
- Use the group_malloc/realloc functions instead of kumm_malloc
2022-03-16 20:21:19 +08:00
Xiang Xiao
75bfa4584c
mm: Add kmm_malloc_size and mm_malloc_size
...
make malloc_size implementation align with malloc
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I8d7781925f06e58a880437a16569dccbfd2ea035
2021-07-05 14:23:24 +09:00
Xiang Xiao
e14c458747
mm/heap: Move semaphore related declaration to private header
...
since other subsystem doesn't need call these function anymore
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Idfb217c412db62d9f17f427310b75bb78785dc50
2021-03-22 15:35:32 +01:00
YAMAMOTO Takashi
a607e6257f
Include malloc.h instead of stdlib.h for mallinfo()
...
This change also removes the malloc.h inclusion in stdlib.h
to break the build if there are still users of mallinfo() with stdlib.h.
2020-06-15 07:21:19 -06:00
Xiang Xiao
eca7059785
Refine __KERNEL__ and CONFIG_BUILD_xxx usage in the code base
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2020-05-01 10:43:47 -03:00
Gregory Nutt
67ec3d7926
Remove CONFIG_CAN_PASS_STRUCT
...
This commit resolves issue #620 :
Remove CONFIG_CAN_PASS_STRUCTS #620
The configuration option CONFIG_CAN_PASS_STRUCTS was added many years ago to support an old version of the SDCC compiler. That compiler is currently used only with the Z80 and Z180 targets. The limitation of that old compiler was that it could not pass structures or unions as either inputs or outputs. For example:
#ifdef CONFIG_CAN_PASS_STRUCTS
struct mallinfo mallinfo(void);
#else
int mallinfo(FAR struct mallinfo *info);
#endif
And even leads to violation of a few POSIX interfaces like:
#ifdef CONFIG_CAN_PASS_STRUCTS
int sigqueue(int pid, int signo, union sigval value);
#else
int sigqueue(int pid, int signo, FAR void *sival_ptr);
#endif
This breaks the 1st INVIOLABLES rule:
Strict POSIX compliance
-----------------------
o Strict conformance to the portable standard OS interface as defined at
OpenGroup.org.
o A deeply embedded system requires some special support. Special
support must be minimized.
o The portable interface must never be compromised only for the sake of
expediency.
o Expediency or even improved performance are not justifications for
violation of the strict POSIX interface
Also, it appears that the current SDCC compilers have resolve this issue and so, perhaps, this is no longer a problem: z88dk/z88dk#1132
NOTE: This commit cannot pass the PR checks because it depends on matching changes to the apps/ directory.
2020-04-11 21:19:47 +01:00
ligd
cbf31bca5c
global change: fix tools/checkpatch.sh warnnings
...
Change-Id: I88cfa979c44bcaf3a8f6e036c6bfccd3402ca85a
Signed-off-by: ligd <liguiding@fishsemi.com>
2020-04-09 10:29:28 -06:00
ligd
231ad202ee
global change: repace sched_xfree() to kxmm_free()
...
Changes:
sched_xfree() => kxmm_free()
remove garbage related APIs
remove ARCH_HAVE_GARBAGE
Cause garbage feature move to mm_heap, then don't need
garbage anymore.
Change-Id: If310790a3208155ca8ab319e8d038cb6ff92c518
Signed-off-by: ligd <liguiding@fishsemi.com>
2020-04-09 10:29:28 -06:00
Xiang Xiao
bd4e8e19d3
Run codespell -w against all files
...
and fix the wrong correction
2020-02-22 14:45:07 -06:00
zhuyanlin
57b91a8cfc
include/nuttx/kmalloc.h: Add {kumm/kmm}_calloc API. Add calloc API for manage user memory and kernel memory in Flat Build/Kernel Build without kernel heap.
2018-08-27 05:55:09 -06:00
Xiang Xiao
430bf16f1e
Squashed commit of the following:
...
include/nuttx/arch.h: Add prototype for an architecture-specific up_trigger_irq function
arch/, include/nuttx, sched/sched: Add the garbage collection hook so each architecture can do custom memory cleanup if necesary.
arch/Kconfig: Add configureation CONFIG_ARCH_GNU_NO_WEAKFUNCTIONS to suppress use of weak functions. Some gnu derived toolchains do not support weak symbols
2018-08-24 08:30:01 -06:00
Gregory Nutt
070d40260b
profcs: At file to should user space heap. This replaces the NSH free command.
2017-11-13 12:51:33 -06:00
Gregory Nutt
6aeb4a52e8
Performance improvement: Idle loop should not take MM semaphore if there is not garbage to be collected. This can cause loss of performance and thrashing in tasking
2016-02-16 19:33:22 -06:00
Gregory Nutt
59cc4a7a7b
Protected mode: Redesign how the user space heap is accessed from the kernel code. It used to call memory management functions in user space via function pointers in the userspace interface. That is inefficient because the first thing that those memory management functions do is to trap back into the kernel to get the current PID. Worse, that operation can be fatal is certain fragile situations such as when a task is exitting.
...
The solution is to remove all of the memory management function calls from the interface. Instead, the interface exports the userspace heap structure and then kernel size implementations of those memory management functions will operate on the userspace heap structure. This avoids the unnecessary system calls and, more importantly, failures do to freeing memory when a test exits.
2015-07-10 08:37:02 -06:00
Gregory Nutt
b33c2d9cef
Move include/nuttx/mm.h to include/nuttx/mm/mm.h
2014-09-24 07:29:09 -06:00
Gregory Nutt
166d46a819
Fix error in new macro definition that causes compile problem when not using a kernel-mode build
2014-09-04 07:01:22 -06:00
Gregory Nutt
b2a94b6f2b
Fix more places where the user-mode allocator is used to allocate kernel thread resources -- before the user-mode allocator even exists
2014-09-03 14:58:24 -06:00
Gregory Nutt
b4438e44c5
Restructuring of build to allow use of use-space allocators by kernel logic in the kernel build.
2014-09-02 11:22:09 -06:00
Gregory Nutt
1780810d3d
Rename kmalloc to kmm_malloc for consistency
2014-08-31 17:26:36 -06:00
Gregory Nutt
54fa3b0b59
Rename kfree to kmm_free for consistency with other naming conventions
2014-08-31 17:04:02 -06:00
Gregory Nutt
9aca0c1c84
Rename kumalloc to kumm_malloc and kuzalloc to kumm_zalloc for consistency with other naming
2014-08-31 16:24:24 -06:00
Gregory Nutt
9ad7dae4c1
Rename kufree to kumm_free for consistency with other naming
2014-08-31 16:15:11 -06:00
Gregory Nutt
9cd1ddada4
Rename kmemalign to kmm_memalign and krealloc to kmm_realooc for consistency with other naming
2014-08-31 15:27:37 -06:00
Gregory Nutt
5a488475a8
Rename kmemalign to kmm_memalign for consitency with other naming
2014-08-31 14:57:31 -06:00
Gregory Nutt
2904fb0420
Clean up some kernel build heap allocation issues. The Cortex-A kernel build now compiles without errors (but cannot link until brk() and sbrk() are implemented).
2014-08-31 12:50:05 -06:00
Gregory Nutt
3c1a70c9dc
Remove CONFIG_MM_MULTIHEAP. Non-multiheap operation is no longer supported
2014-08-31 10:54:55 -06:00
Gregory Nutt
e3ff0689bb
Rename CONFIG_NUTTX_KERNEL to CONFIG_BUILD_PROTECTED; Partially integrate new CONFIG_BUILD_KERNEL
2014-08-29 14:47:22 -06:00
Gregory Nutt
e13e5685cb
/proc task directories can now have sub-directories
2013-12-15 10:31:07 -06:00
Gregory Nutt
e3a76b2e64
Add kernel/user memalign functions. Not fully integrated
2013-08-20 13:04:49 -06:00
patacongo
73ef58fda6
A few early fixes in kernel build testing
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5734 42af7a65-404d-4744-a932-0658087f49c3
2013-03-12 16:02:48 +00:00
patacongo
2b64d4742a
Fix a typo that crept into lpc17_allocateheap.c in the recent kernel allocator changes
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5729 42af7a65-404d-4744-a932-0658087f49c3
2013-03-11 13:21:33 +00:00
patacongo
2433c1461b
Remove user_map.h; replace with a header at the beginning of the user-space blob. User work queue no started by os_brinup() on behalf of the application
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5727 42af7a65-404d-4744-a932-0658087f49c3
2013-03-10 23:42:49 +00:00
patacongo
1ef904003e
Create sched_ufree and sched_kfree from sched_free; Use user-accessible heap to allocae stacks
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5725 42af7a65-404d-4744-a932-0658087f49c3
2013-03-10 15:32:33 +00:00
patacongo
1c52dce216
More changes for a kernel-mode allocator (more to be done)
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5724 42af7a65-404d-4744-a932-0658087f49c3
2013-03-09 21:12:20 +00:00
patacongo
feca2c077e
With these fixes, the kernel build is basically functional (but there is more to be done)
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5722 42af7a65-404d-4744-a932-0658087f49c3
2013-03-09 01:27:42 +00:00
patacongo
0db8dc83ee
up_addregion should use kmm_addregion; move garbage kmm*.c file to mm/. for now
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5721 42af7a65-404d-4744-a932-0658087f49c3
2013-03-08 22:01:50 +00:00
patacongo
017e07d35d
Add support for multiple heaps
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5720 42af7a65-404d-4744-a932-0658087f49c3
2013-03-08 20:36:18 +00:00
patacongo
45ce321f51
Move all memory manager globals to a structure. Pass structure pointer as a handler because MM APIs
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5719 42af7a65-404d-4744-a932-0658087f49c3
2013-03-08 18:29:56 +00:00
patacongo
4b3ad32ee5
Fix network poll() issue: don't interrupt poll if socket not connected. Listen sockets are not connected and the poll() is waiting for connection events.
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5717 42af7a65-404d-4744-a932-0658087f49c3
2013-03-07 17:59:21 +00:00
patacongo
4134862fb2
Move work queue logic from sched/ to libc/wqueue. It is not core logic and will be extended to support user-space work queues
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5711 42af7a65-404d-4744-a932-0658087f49c3
2013-03-05 18:57:51 +00:00
patacongo
8e5733ae3f
Header file clean-up
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4948 42af7a65-404d-4744-a932-0658087f49c3
2012-07-17 03:58:11 +00:00
patacongo
3910f865ec
Fix bugs introduced in last commit
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3470 42af7a65-404d-4744-a932-0658087f49c3
2011-04-05 21:18:03 +00:00
patacongo
4388221844
More separation of kernel- and user-memory management
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3468 42af7a65-404d-4744-a932-0658087f49c3
2011-04-05 17:33:50 +00:00
patacongo
3552ddb5ff
Add a layer to redirect kernel-mode memory manager accesses
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3466 42af7a65-404d-4744-a932-0658087f49c3
2011-04-05 15:50:01 +00:00
patacongo
bae9dce323
Move memory manager into user space
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3460 42af7a65-404d-4744-a932-0658087f49c3
2011-04-03 20:41:49 +00:00
patacongo
0a9c6e69a3
Added nxglib.h
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1309 42af7a65-404d-4744-a932-0658087f49c3
2008-11-26 15:48:48 +00:00
patacongo
60d8905398
Added USB device controller driver for LPC214x
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@960 42af7a65-404d-4744-a932-0658087f49c3
2008-09-29 22:04:58 +00:00