Commit Graph

672 Commits

Author SHA1 Message Date
Gregory Nutt
bba8541ad6 mm/iob: Add an IOB notifier that will send a signal to any registered threads that want to be notified when an IOB has been freed. This is an untested work-in-progress and is intended to be a part of a larger solution to correctly handling network poll operations. 2018-09-08 11:21:18 -06:00
Xiang Xiao
86eef8ce3a mm/: add mm_heapmember function and reimplement kmm_heapmember base on mm_heapmember since this function is very useful if multiple heaps exist. 2018-08-23 09:38:49 -06:00
Alan Carvalho de Assis
283b73edc5 Fix lots of typos in C comments and Kconfig help text 2018-07-08 18:24:45 -06:00
Juha Niskanen
044d538da3 Fix some errors found during upstream merge 2018-06-28 07:06:57 -06:00
Gregory Nutt
0786b5d053 net/tcp: Re-think CONFIG_NET_TCP_RWND_CONTROL TCP windowing controls. 2018-06-24 14:46:12 -06:00
Dmitriy Linikov
87c8b116ca mm/iob/iob_copyin.c: Fixed problem with send() ret value when using nonblocking io over buffered tcp socket 2018-03-20 06:58:57 -06:00
Masayuki Ishikawa
1d958980bd Merged in masayuki2009/nuttx.nuttx/fix_smp_bugs (pull request #615)
Fix SMP related bugs

* sched/sched: Fix a deadlock in SMP mode

    Two months ago, I introduced sched_tasklist_lock() and
    sched_tasklist_unlock() to protect tasklists in SMP mode.
    Actually, this change works pretty well for HTTP audio
    streaming aging test with lc823450-xgevk.

    However, I found a deadlock in the scheduler when I tried
    similar aging tests with DVFS autonomous mode where CPU
    clock speed changed based on cpu load. In this case, call
    sequences were as follows;

    cpu1: sched_unlock()->sched_mergepending()->sched_addreadytorun()->up_cpu_pause()
    cpu0: sched_lock()->sched_mergepending()

    To avoid this deadlock, I added sched_tasklist_unlock() when calling
    up_cpu_pause() and sched_addreadytorun(). Also, added
    sched_tasklist_lock() after the call.

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* libc: Add critical section in lib_filesem.c for SMP

    To set my_pid into fs_folder atomically in SMP mode,
    critical section API must be used.

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* mm: Add critical section in mm_sem.c for SMP

    To set my_pid into mm_folder atomically in SMP mode,
    critical section API must be used.

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* net: Add critical section in net_lock.c for SMP

    To set my pid (me) into fs_folder atomically in SMP mode,
    critical section API must be used.

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2018-03-20 12:34:38 +00:00
Gregory Nutt
b54ffe858a Standardization of some function headers. 2018-03-13 09:52:27 -06:00
Dmitriy Linikov
a8c58607e9 Merged in hardlulz/modem-3.0-nuttx/fix-sem-EINTR (pull request #603)
Added ECANCELED condition to DEBUGASSERT-s checking sem_wait result

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2018-02-20 18:24:53 +00:00
Gregory Nutt
7cf88d7dbd Make sure that labeling is used consistently in all function headers. 2018-02-01 10:00:02 -06:00
Gregory Nutt
3521aaf944 Squashed commit of the following:
binfmt/, configs/, grahics/, libc/, mm/, net/, sched/:  OS references to the errno variable should always use the set_errno(), get_errno() macros
    arch/arm/src/stm32 and stm32f7:  Architecture-specific code is not permitted to modify the errno variable.  drivers/ and libc/:  OS references to the errno variable should always use the set_errno(), get_errno() macros
2018-01-30 17:57:36 -06:00
Gregory Nutt
fef255e5be This commit adds an as-of-yet untested implemented of UDP write buffering.
Squashed commit of the following:

    net/udp:  Address most of the issues with UDP write buffering.  There is a remaining issue with handling one network going down in a multi-network environment.  None of this has been test but it is certainly ready for test.  Hence, the feature is marked EXPERIMENTAL.
    net/udp:  Some baby steps toward a corrected write buffering design.
    net/udp:  Remove pesky write buffer macros.
    Eliminate trailing space at the end of lines.
    net/udp:  A little more UDP write buffering logic.  Still at least on big gaping hole in the design.
    net/udp:  Undefined CONFIG_NET_SENDTO_TIMEOUT.
    net/udp:  Crude, naive port of the TCP write buffering logic into UDP.  This commit is certainly non-functional and is simply a starting point for the implementatin of UDP write buffering.
    net/udp:  Rename udp/udp_psock_sendto.c udp/udp_psock_sendto_unbuffered.c.
2018-01-22 18:32:02 -06:00
Gregory Nutt
fb6208fbbc mm: Fix a typo in a debug assertion. 2017-11-22 07:30:48 -06:00
Gregory Nutt
514ac3fe98 mm: Add a debug assertin to check for integer overflow in malloc. 2017-11-21 07:24:10 -06:00
Gregory Nutt
ef89207c8d Build system: Fix CONFIG_BUILD_KERNEL logic directories that have ubin and kbin subdirectories. Conditional logic was fine for CONFIG_BUILD_FLAT and CONFIG_BUILD_PROTECTED but generated useless dependencies if CONFIG_BUILD_KERNEL. 2017-11-15 07:54:09 -06:00
Gregory Nutt
fa4722a5ac mm/mm_gran: Combine some common logic into a function (also fixes a subtle bug). 2017-11-15 07:54:08 -06:00
Gregory Nutt
1191238b17 mm/mm_gran: Fix some issues found during test of the new gran_info() interface. 2017-11-14 16:13:20 -06:00
Gregory Nutt
d720711807 fs/procfs: Add logic to show the state of the page allocator in /proc/meminfo. 2017-11-14 14:59:51 -06:00
Gregory Nutt
54fad8d04f mm/mm_gran: Add a function to get information about the state of the granuale allocator. 2017-11-14 14:41:03 -06:00
Gregory Nutt
62b8026976 Remove CONFIG_GRAN_SINGLE. It adds no technical benefit (other than some minor reduction in the number of interface arguments) but adds a lot of code complexity. Better without it. 2017-11-14 11:47:12 -06:00
Jussi Kivilinna
75b53d563b mm/mm-heap: memalign: fix heap corruption caused by using unaligned chuck size. Unaligned nodes generated by memalign later cause heap corruptions when nodes are shrink further (for example, 24 bytes -> 8 bytes, when alignment is 16 bytes). 2017-10-24 15:35:52 -06:00
Gregory Nutt
34a572b226 Update last commit... Check should really use the definition MMSIZE_MAX which is really the same thing, but guaranteed to be the correct maximum size in any present and future configuration. 2017-10-17 07:34:06 -06:00
EunBong Song
196911d4fa If size is greater than (UINT32_MAX - SIZEOF_MM_ALLOCNODE), malloc size can be overflow by MM_ALIGN_UP macro. For example, if task_create() called with stack_size == -1, up_create_stack() functions allocates SIZEOF_MM_ALLOCNODE bytes for stack.
This can cause data abort in up_stack_color() function.
2017-10-17 06:37:09 -06:00
Gregory Nutt
700f1a8e8c Eliminate some warnings found in build testing. 2017-10-08 16:27:17 -06:00
Gregory Nutt
a857cc04e4 Fix some build problems after recent separation of internal OS from application interfaces. The build problem only occurs in the PROTECTED and KERNEL builds where separate libraries are built for the applications and for use within the OS. In these cases, the correct interfaces must be used. This commit fixes a few of these, so I can get through build testing, but there are many more that need fixin'. 2017-10-08 08:13:47 -06:00
Gregory Nutt
9e25d89223 Squashed commit of the following:
Replace all usage kill() in the OS proper with nxsig_kill().

    sched/signal:  Add nxsig_kill() which is functionally equivalent to kill() except that it does not modify the errno variable.
2017-10-07 08:22:18 -06:00
Gregory Nutt
91537a7722 mm/: Heap semaphore logic needs to use nxsem_* interfaces when available, but the standard semaphores only when implementing a user-space heap. Not this does introduce and issue: the memory management functions them become cancellation points because of the use of sem_wait. 2017-10-07 07:16:33 -06:00
Gregory Nutt
7cc63f90d9 sched/semaphore: sem_trywait() modifies the errno value and, hence, should not be used within the OS. Use nxsem_trywait() instead. 2017-10-05 07:59:06 -06:00
Gregory Nutt
9568600ab1 Squashed commit of the following:
This commit backs out most of commit b4747286b1.  That change was added because sem_wait() would sometimes cause cancellation points inappropriated.  But with these recent changes, nxsem_wait() is used instead and it is not a cancellation point.

    In the OS, all calls to sem_wait() changed to nxsem_wait().  nxsem_wait() does not return errors via errno so each place where nxsem_wait() is now called must not examine the errno variable.

    In all OS functions (not libraries), change sem_wait() to nxsem_wait().  This will prevent the OS from creating bogus cancellation points and from modifying the per-task errno variable.

    sched/semaphore:  Add the function nxsem_wait().  This is a new internal OS interface.  It is functionally equivalent to sem_wait() except that (1) it is not a cancellation point, and (2) it does not set the per-thread errno value on return.
2017-10-04 15:22:27 -06:00
Gregory Nutt
42a0796615 Squashed commit of the following:
sched/semaphore:  Add nxsem_post() which is identical to sem_post() except that it never modifies the errno variable.  Changed all references to sem_post in the OS to nxsem_post().

    sched/semaphore:  Add nxsem_destroy() which is identical to sem_destroy() except that it never modifies the errno variable.  Changed all references to sem_destroy() in the OS to nxsem_destroy().

    libc/semaphore and sched/semaphore:  Add nxsem_getprotocol() and nxsem_setprotocola which are identical to sem_getprotocol() and set_setprotocol() except that they never modifies the errno variable.  Changed all references to sem_setprotocol in the OS to nxsem_setprotocol().  sem_getprotocol() was not used in the OS
2017-10-03 15:35:24 -06:00
Gregory Nutt
83cdb0c552 Squashed commit of the following:
libc/semaphore:  Add nxsem_getvalue() which is identical to sem_getvalue() except that it never modifies the errno variable.  Changed all references to sem_getvalue in the OS to nxsem_getvalue().

    sched/semaphore:  Rename all internal private functions from sem_xyz to nxsem_xyz.  The sem_ prefix is (will be) reserved only for the application semaphore interfaces.

    libc/semaphore:  Add nxsem_init() which is identical to sem_init() except that it never modifies the errno variable.  Changed all references to sem_init in the OS to nxsem_init().

    sched/semaphore:  Rename sem_tickwait() to nxsem_tickwait() so that it is clear this is an internal OS function.

    sched/semaphoate:  Rename sem_reset() to nxsem_reset() so that it is clear this is an internal OS function.
2017-10-03 12:52:31 -06:00
Jussi Kivilinna
81b5118727 mm_mallinfo: do heap end debug assert check with heap semaphore held 2017-08-03 10:01:26 -06:00
Gregory Nutt
98d937104e mm/: Remove dangling space at the end of lines. 2017-06-28 13:31:21 -06:00
Gregory Nutt
d9bd5ca05f Update README and some C comments 2017-05-30 09:19:04 -06:00
Gregory Nutt
e9c55d8f7d IOBs: Fix a typing error mm/iob/iob.h mm/iob/iob_initialize.c 2017-05-27 08:03:00 -06:00
Gregory Nutt
2c00825dcf Porting Guide: Add description of IOBs. 2017-05-20 08:50:05 -06:00
Masayuki Ishikawa
f10e10e465 IOBs: Fix build break
Signed-off-by: Masayuki Ishikawa <masayuki.ishikawa@gmail.com>
2017-05-18 13:59:03 +09:00
Gregory Nutt
5ce2ece134 syslog: Add header file inclusion to eliminate a warning; mm/iob: private function needs static storage class. 2017-05-16 12:26:23 -06:00
Gregory Nutt
6a3800f611 There can be a failure in IOB allocation to some asynchronous behavior caused by the use of sem_post(). Consider this scenario:
Task A holds an IOB.  There are no further IOBs.  The value of semcount is zero.
Task B calls iob_alloc().  Since there are not IOBs, it calls sem_wait().  The v
alue of semcount is now -1.

Task A frees the IOB.  iob_free() adds the IOB to the free list and calls sem_post() this makes Task B ready to run and sets semcount to zero NOT 1.  There is one IOB in the free list and semcount is zero.  When Task B wakes up it would increment the sem_count back to the correct value.

But an interrupt or another task runs occurs before Task B executes.  The interrupt or other tak takes the IOB off of the free list and decrements the semcount.  But since semcount is then < 0, this causes the assertion because that is an invalid state in the interrupt handler.

So I think that the root cause is that there the asynchrony between incrementing the semcount.  This change separates the list of IOBs:  Currently there is only a free list of IOBs.  The problem, I believe, is because of asynchronies due sem_post() post cause the semcount and the list content to become out of sync.  This change adds a new 'committed' list:  When there is a task waiting for an IOB, it will go into the committed list rather than the free list before the semaphore is posted.  On the waiting side, when awakened from the semaphore wait, it will expect to find its IOB in the committed list, rather than free list.

In this way, the content of the free list and the value of the semaphore count always remain in sync.
2017-05-16 11:03:35 -06:00
Gregory Nutt
0de294a586 Fix lots of occurrences of 'the the', 'the there', 'the these', 'the then', 'the they. 2017-05-11 13:35:56 -06:00
Gregory Nutt
d3b9f5b37f Syslog buffering: Use IOBs to buffer data, not an on-stack buffer 2017-05-10 17:36:08 -06:00
Gregory Nutt
de6bffe713 Update some README files 2017-05-09 11:32:44 -06:00
Gregory Nutt
2043e1a114 IOBs: Move from driver/iob to a better location in mm/iob 2017-05-09 07:35:30 -06:00
Gregory Nutt
0064dc52e5 realloc(): When realloc() has to fall back to calling malloc(), size including overhead was being provided to malloc(), causing a slightly larger allocation than needed. Noted by initialkjc@yahoo.com 2017-03-28 07:23:46 -06:00
Gregory Nutt
6f1c5e7b43 Add some comments. 2016-11-05 09:44:29 -06:00
Gregory Nutt
43eb04bb8f Without lowsyslog() *llinfo() is not useful. Eliminate and replace with *info(). 2016-06-20 11:59:15 -06:00
Gregory Nutt
0c8c7fecf0 Add _ to the beginning of all debug macros to avoid name collisions 2016-06-16 12:33:32 -06:00
Gregory Nutt
cf4075c741 Missed macro definition in one case 2016-06-12 11:13:34 -06:00
Gregory Nutt
823b4b0cff Forget to define an info() macro 2016-06-12 11:11:08 -06:00
Gregory Nutt
b29a4dd49c audio/, crypto/, libnx/, and mm/: Change some err() ERRORS to warn() WARNINGS or info() 2016-06-12 09:46:23 -06:00
Gregory Nutt
a1469a3e95 Add CONFIG_DEBUG_ERROR. Change names of *dbg() * *err() 2016-06-11 15:50:49 -06:00
Gregory Nutt
e99301d7c2 Rename *lldbg to *llerr 2016-06-11 14:55:27 -06:00
Gregory Nutt
86b79b33cf Reserver the name 'err' for other purposes 2016-06-11 14:40:07 -06:00
Gregory Nutt
1cdc746726 Rename CONFIG_DEBUG to CONFIG_DEBUG_FEATURES 2016-06-11 14:14:08 -06:00
Gregory Nutt
fc3540cffe Replace all occurrences of vdbg with vinfo 2016-06-11 11:59:51 -06:00
Paul A. Patience
f8f7b7582c Silence some warnings 2016-05-26 14:06:13 -04:00
Gregory Nutt
c4493528a1 Remove some empty file section section header comments 2016-02-17 18:57:35 -06:00
Gregory Nutt
241ab98c5b Remove some empty file section section header comments 2016-02-17 18:31:56 -06:00
Gregory Nutt
fccef49305 Cosmetic changes to comments 2016-02-15 13:48:08 -06:00
Gregory Nutt
046e39e2c6 nuttx/mm and libc: Replace irqsave() with enter_critical_section(); replace irqrestore() with leave_critical_section() 2016-02-14 08:57:01 -06:00
Gregory Nutt
f45166af32 SMP: Fix a IDLE task semaphore operation 2016-02-12 18:03:08 -06:00
Gregory Nutt
40659d12df Rename libxx_internal.h to libxx.h 2015-12-30 07:56:56 -06:00
Gregory Nutt
b90da3f27b waitpid: CRITICAL BUGFIX. Add a reference counting mechansim to prevent wait from using stale memory that was freed by the exiting task 2015-12-22 11:48:17 -06:00
Paul A. Patience
bfc95c641f stdlib: Fix forgotten FARs 2015-11-18 14:22:43 -05:00
Gregory Nutt
06cd5b2fcc mm, audio, crypto, graphics: Fix various spacing/alignment issues 2015-10-08 09:10:22 -06:00
Gregory Nutt
af086c40ff Remove dangling whitespace 2015-10-04 15:28:54 -06:00
Gregory Nutt
0b12dbf95d Fix some spacing problems 2015-10-04 15:04:00 -06:00
Gregory Nutt
5b51a9fcdd Standardize the width of all comment boxes in C files 2015-10-02 17:43:18 -06:00
Gregory Nutt
cb9e27c3b0 Standardize naming used for public data and function groupings 2015-10-02 16:30:35 -06:00
Paul A. Patience
9f108b7b63 Fix issues detected by clang 2015-09-10 20:59:43 -04:00
Gregory Nutt
07e9a02af9 Forgot to add two files in previous commit 2015-07-10 08:46:13 -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
342f5fe33d Fix references to the no-longer-existent misc/ directory in comments, README files, and documentation 2015-06-28 08:08:57 -06:00
Gregory Nutt
0476d8168a More missing semicolons after DEBUGASSERT 2015-05-27 13:32:39 -06:00
Gregory Nutt
2aa80e06f5 Remove executable flag from more .c and .h files 2015-04-09 08:20:57 -06:00
Gregory Nutt
a4a6917267 Fixes some issues found by the PX4 team using Coverity. From Pavel Krienko 2015-01-19 13:01:20 -06:00
Gregory Nutt
9ac09db800 More fixes to problems noted by cppcheck. Some are kind of risky; some are real bugs. 2014-11-25 13:46:14 -06:00
Gregory Nutt
f06289e4d5 If the INTR granule allocator mode is enabled, there is no
semaphore to destroy.  From Lorenz Meier.
2014-11-12 06:56:32 -06:00
Gregory Nutt
8634a5e41c Fix a typo in a Kconfig file 2014-09-27 16:11:48 -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
1863370672 Move include/nuttx/shm.h to include/nuttx/mm/shm.h 2014-09-24 07:05:02 -06:00
Gregory Nutt
2fa7431ee7 Move include/nuttx/gran.h to include/nuttx/mm/gran.h 2014-09-24 06:55:26 -06:00
Gregory Nutt
0f97d81f8d Completes the implemenation of the core shared memory logic: shmget(), shmctl(), shmat(), and shmdt(). This is still some unfinish platform-specific code that needs to be done before we can begin testing. 2014-09-23 16:07:12 -06:00
Gregory Nutt
d546ebabe4 Remove executable mode 2014-09-23 16:06:22 -06:00
Gregory Nutt
ee0d20d44c Add interfaces to support un-initializing a granule allocator. 2014-09-23 16:05:32 -06:00
Gregory Nutt
835c91b03a Add support for a per-process virtual page allocator. This is a new member of the task_group_s structure. The allocaor must be initialized when a new user process is started and uninitialize when the process group is finally destroyed. It is used by shmat() and shmdt() to pick the virtual address onto which to map the shared physical memory. 2014-09-23 16:04:39 -06:00
Gregory Nutt
b542d1733f Cosmetic 2014-09-23 16:03:52 -06:00
Gregory Nutt
566dc8dd38 Add interfaces to support un-initializing a granule allocator. 2014-09-23 15:50:45 -06:00
Gregory Nutt
115634ff4d Flesh out shmctl() logic 2014-09-23 11:41:05 -06:00
Gregory Nutt
5efd5738e9 Flesh out basic logic for shmget() 2014-09-23 10:42:18 -06:00
Gregory Nutt
a73a3ef99f Add shared memory initializatin logic 2014-09-23 08:46:31 -06:00
Gregory Nutt
242d5f2068 Add README files and configuration support for the shared memory logic 2014-09-23 07:11:47 -06:00
Gregory Nutt
18ce64d61e Add the build framework and skeleton files for the shared memory feature (no logic yet provided) 2014-09-22 14:53:56 -06:00
Gregory Nutt
6bed778738 Again I forget to add a file needed in a previous commit 2014-09-22 10:59:00 -06:00
Gregory Nutt
c5a206666d Add a home for forthcoming shared memory logic 2014-09-22 10:58:27 -06:00
Gregory Nutt
3464089542 Move core heap allocator logic from mm/. to mm/mm_heap/. 2014-09-22 10:53:50 -06:00
Gregory Nutt
8b8c134efa Move the user heap allocator front-end from mm/. to mm/umm_heap/. 2014-09-22 10:48:58 -06:00
Gregory Nutt
77bf9d6ae7 Forgot to add a file in the last commit 2014-09-22 10:43:46 -06:00
Gregory Nutt
c3a2527e56 Move the kernel heap allocator front-end from mm/. to mm/kmm_heap/. 2014-09-22 10:42:26 -06:00
Gregory Nutt
907e45752b Move granuale allocator and page allocator from mm/. to mm/mm_gran/. 2014-09-22 10:33:23 -06:00
Gregory Nutt
5d9276ed71 More changes so that the KNSH build survives the changes needed for the ELF build 2014-09-16 15:55:21 -06:00
Gregory Nutt
925fc9ad81 First round of changes to get the ELF configuration building again 2014-09-16 15:37:05 -06:00
Gregory Nutt
8993910427 Fix a typo in use of a configuration setting 2014-09-13 12:24:08 -06:00
Gregory Nutt
205c23b9d6 Add logic to initialize the per-process user heap when each user process is started 2014-09-10 15:55:36 -06:00
Gregory Nutt
0c8830f9f3 Granule allocator initialization uses wrong allocator to setting aside kernel memory 2014-09-03 13:46:05 -06:00
Gregory Nutt
b05f29dbfe I love/hate conditional compilation 2014-09-03 11:43:23 -06:00
Gregory Nutt
67d516d9d1 Fix several compile errors for logic added for CONFIG_BUILD_KERNEL, but which cause problems for other configurations 2014-09-03 09:21:59 -06:00
Gregory Nutt
1a4f8914c5 Add support for delivery of use-mode signals in the kernel build. 2014-09-02 15:58:14 -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
b085e084f4 Space at the beginning of the process data space is now reserved for user heap management structures. In the kernel build mode, these heap structures are shared between the kernel and use code in order to allocate user-specific data. 2014-09-02 11:21:23 -06:00
Gregory Nutt
a5af2568eb sbrk() need to initialized the memory manager on the first call 2014-09-02 08:05:11 -06:00
Gregory Nutt
45c31d633c Completes the implementation of sbrk() (untested) 2014-09-01 10:46:51 -06:00
Gregory Nutt
f8a8ce4b18 Initial implementatino of sbrk() 2014-09-01 07:37:54 -06:00
Gregory Nutt
205260d5e2 Reanem kzalloc to kmm_zalloc for consistency 2014-08-31 17:34:44 -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
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
ecdb5120dd Add low-level memory management hooks that will be needed to support brk() and sbrk() 2014-08-31 14:42:45 -06:00
Gregory Nutt
b0246d0b7d mm: Break up mm_user.c and mm_kernel.c into separate files for better symmetry 2014-08-31 11:46:47 -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
0571a59e12 Need to condition out standard allocators in kernel build. More to be done 2014-08-31 08:10:15 -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
00f5e8f70e Bugfixes.. still integrating SAMA5 ELF with address environment 2014-08-25 15:27:58 -06:00
Gregory Nutt
e1799b0423 Cortex-A/SAMA5 address environment support is code complete (untested) 2014-08-25 11:18:32 -06:00
Gregory Nutt
b028fb31e9 include/nuttx/pgalloc.h and mm/mm_pgalloc.c: Add a simple page allocator based on the existing NuttX granule allocator. I am not certain if the granule allocator is sufficiently deterministic for long range use, but it gets get a page allocator in place for testing very quickly. 2014-08-23 16:37:16 -06:00
Gregory Nutt
7cd8db9425 gran_reserve(): Add a new function to reserve unallocatable regions in the granule heap 2014-08-23 12:43:21 -06:00
Gregory Nutt
6f3cb90c05 Cosmetic changes 2014-05-28 14:09:58 -06:00
Gregory Nutt
56e5bc4268 Costmetic changes to memory manager debug output 2014-05-24 10:40:07 -06:00
Gregory Nutt
2abe0dd6dd Change all variadic macros to C99 style 2014-05-22 09:01:51 -06:00
Gregory Nutt
3a1324741a More trailing whilespace removal 2014-04-13 14:32:20 -06:00
Gregory Nutt
e10ab85d1d More changes to restore the native Windows build 2014-02-07 10:14:11 -06:00
Gregory Nutt
806b01deef 16z: Fix option bits; adjust system clock frequency 2014-01-23 12:06:57 -06:00
Gregory Nutt
9f01df47ea Create procfs_utils.c; File missed from last commit; + remove warning from mm_memalign.c (how did this work before?) 2013-12-14 08:53:23 -06:00
Gregory Nutt
0c6474cdf0 Fix some kernel-mode compilation problems 2013-12-11 16:49:48 -06:00
Gregory Nutt
78936f7260 Changes for ZDS-II ez80 build 2013-11-28 17:47:03 -06:00
Gregory Nutt
dc4c6bcb57 When creating kernel dependencies, need to define __KERNEL__ 2013-09-29 15:03:10 -06:00
Gregory Nutt
c038f4efe0 Dependency generation fix for directories that keep object files in a sub-directory 2013-09-29 11:46:10 -06:00
Gregory Nutt
bc46b447dc Fix all occurrences of "the the" in documentation and comments 2013-08-27 09:40:19 -06:00
Gregory Nutt
e3a76b2e64 Add kernel/user memalign functions. Not fully integrated 2013-08-20 13:04:49 -06:00
Gregory Nutt
76867c132e Beginning updates of SAM3U header files o include support for the SAM4S: WDT, SUPC, EEFC, MATRIX, and PMC 2013-06-10 11:57:37 -06:00
Gregory Nutt
19b38fa95f Add power management register defintions and clock control logic for the SAM4L 2013-06-05 13:35:19 -06:00
Gregory Nutt
4748599a43 .dSYM only needs to be in the same .gitignore files as .exe 2013-05-30 15:02:04 -06:00
Gregory Nutt
7554d2888e Upate .gitignore files. Add .dSYM. Make sure / is present where needed. Add some missing .gitignore files 2013-05-30 14:45:31 -06:00
Gregory Nutt
f9b9875952 Various Kconfig files still have references to CONFIG_ variables. Some in harmless comments, some in config definionts which is not harmless. All removed 2013-04-25 15:52:00 -06:00
Gregory Nutt
a9f461533e Need to include debug.h or compile fails when memory management debug is enabled 2013-04-18 11:40:38 -06:00
Gregory Nutt
db78b76102 Mostly updates and corrections to .gitignore files 2013-04-04 15:39:50 -06:00
Gregory Nutt
23db0682b7 Clone svn:ignore directory atributed to .gitignore files 2013-04-04 14:27:29 -06:00
patacongo
6c2fb4405c Directories where the same source files are used to build different objects need to keep those objects in separate directories; LPC17xx updates from Chris Taglia
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5762 42af7a65-404d-4744-a932-0658087f49c3
2013-03-19 23:40:07 +00:00
patacongo
14298ad8b8 Fixe to kernel build and syscalls.
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5738 42af7a65-404d-4744-a932-0658087f49c3
2013-03-13 17:32:37 +00:00
patacongo
3781d761f3 Fix a bug introduced in the last check-in
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5728 42af7a65-404d-4744-a932-0658087f49c3
2013-03-11 00:04:50 +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
18ca1965b6 AT91SAM3 now supports kernel-mode heap; SAM3U-EK knsh configuration converted to use kconfig-frontends tool
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5726 42af7a65-404d-4744-a932-0658087f49c3
2013-03-10 19:31:10 +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
be1b67a1a2 Add debug output when memory allocations fail
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5686 42af7a65-404d-4744-a932-0658087f49c3
2013-02-28 15:31:58 +00:00
patacongo
153984b9c9 Several patches from Petteri Aimonen
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5625 42af7a65-404d-4744-a932-0658087f49c3
2013-02-08 15:28:07 +00:00
patacongo
549429b675 Fix some early z180 compile errors
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5430 42af7a65-404d-4744-a932-0658087f49c3
2012-12-11 22:51:20 +00:00
patacongo
0f218d0e00 Add support for the Z180 MMU and generic hooks for processes
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5428 42af7a65-404d-4744-a932-0658087f49c3
2012-12-11 18:04:04 +00:00
patacongo
469ec154c0 Missing comma in EVERY DELFILE/DELDIR macro call in every Makefile
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5373 42af7a65-404d-4744-a932-0658087f49c3
2012-11-20 15:47:41 +00:00
patacongo
26c9112ad2 Most of the changes needed to support Windows native clean; distclean is has a problem
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5367 42af7a65-404d-4744-a932-0658087f49c3
2012-11-17 18:54:53 +00:00
patacongo
f751d36eee Move some (hopefully) un-necessary quotes in Makefiles for Mike
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5356 42af7a65-404d-4744-a932-0658087f49c3
2012-11-15 17:43:29 +00:00
patacongo
4aa5fab17f Changes to get a clean ez80 build using the ZDS 5.1.1 toolchain
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5341 42af7a65-404d-4744-a932-0658087f49c3
2012-11-12 15:22:27 +00:00
patacongo
a5f761c24e Correct some issues with last check-in; ez80 still does not build
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5339 42af7a65-404d-4744-a932-0658087f49c3
2012-11-11 23:44:31 +00:00
patacongo
a1cf659333 Completes removal bash ARCHIVE loop; Adds basic Makefile for native windows build
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5338 42af7a65-404d-4744-a932-0658087f49c3
2012-11-11 18:36:28 +00:00
patacongo
3d2879fc4e Partial change: Removing bash ARCHIVE loop
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5335 42af7a65-404d-4744-a932-0658087f49c3
2012-11-11 15:42:12 +00:00
patacongo
7a2692df6a Resync new repository with old repo r5166
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5154 42af7a65-404d-4744-a932-0658087f49c3
2012-09-17 18:35:37 +00:00
patacongo
a5f05e3e5b Missed one file in last checking; Gran allocator alignment decoupled from granule size
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5152 42af7a65-404d-4744-a932-0658087f49c3
2012-09-14 18:14:40 +00:00
patacongo
b94212a272 Add mm/README.txt
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5140 42af7a65-404d-4744-a932-0658087f49c3
2012-09-13 00:34:43 +00:00
patacongo
4490cd2acc Misc fixes and optimizations for the granule allocator
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5136 42af7a65-404d-4744-a932-0658087f49c3
2012-09-12 17:55:03 +00:00
patacongo
53fb00e20e New file missed in last check-in
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5135 42af7a65-404d-4744-a932-0658087f49c3
2012-09-12 15:21:26 +00:00
patacongo
6474398297 Fix MMC/SD support for Wildfire board; Granule allocator can now be used from intrrupt handler
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5134 42af7a65-404d-4744-a932-0658087f49c3
2012-09-12 15:18:56 +00:00
patacongo
b8cc5c9186 Misc ENC28J60 fixes
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5132 42af7a65-404d-4744-a932-0658087f49c3
2012-09-12 00:12:18 +00:00
patacongo
b75545f120 Fixes for granule allocator
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5131 42af7a65-404d-4744-a932-0658087f49c3
2012-09-11 21:39:39 +00:00
patacongo
26841d617e Update to granule allocator; Update to ENC28j60 driver
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5130 42af7a65-404d-4744-a932-0658087f49c3
2012-09-11 20:33:58 +00:00
patacongo
a30e2f4a27 Add beginning of a simple granule allocator to support DMA IO buffer allocation
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5129 42af7a65-404d-4744-a932-0658087f49c3
2012-09-11 18:22:27 +00:00
patacongo
d869cc4ef7 STM32 Kconfig looks good. STM32 external ram configuration changed.
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5100 42af7a65-404d-4744-a932-0658087f49c3
2012-09-05 23:02:43 +00:00
patacongo
13d17cacbe mm/ file clean-up
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4943 42af7a65-404d-4744-a932-0658087f49c3
2012-07-14 23:31:12 +00:00
patacongo
cb4999caa8 Fix a bad interrupt state in the PIC32 IDLE loop when the work queue is enabled
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4805 42af7a65-404d-4744-a932-0658087f49c3
2012-06-06 01:44:57 +00:00
patacongo
41f3401979 Fix CDC/ACM alternate interface number (from Antti)
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4589 42af7a65-404d-4744-a932-0658087f49c3
2012-04-11 14:47:25 +00:00
patacongo
330b89ca0e Add kconfig documentation
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4567 42af7a65-404d-4744-a932-0658087f49c3
2012-04-06 16:45:52 +00:00
patacongo
4b8c0c41c8 Adding skeleton Kconfig files (part 1 of 2)
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4564 42af7a65-404d-4744-a932-0658087f49c3
2012-04-06 15:49:35 +00:00
patacongo
58a68260c3 Fix an error that caused interrupts to become disabled
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3724 42af7a65-404d-4744-a932-0658087f49c3
2011-06-18 20:02:40 +00:00
patacongo
a542f92647 Fix AVR clock setup; add SPI driver
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3721 42af7a65-404d-4744-a932-0658087f49c3
2011-06-17 22:03:20 +00:00
patacongo
a201aecd89 Add strndup()
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3649 42af7a65-404d-4744-a932-0658087f49c3
2011-05-29 16:07:13 +00:00
patacongo
ae8cfb1bf1 atexit() functions now called when task killed by task delete; For MCUs with <= 64Kb of SRAM, CONFIG_MM_SMALL can be defined to reduce the memory allocation overhead
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3648 42af7a65-404d-4744-a932-0658087f49c3
2011-05-28 21:42:18 +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
e97118d258 Port the mm/mm_test.c logic to examples/mm
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3330 42af7a65-404d-4744-a932-0658087f49c3
2011-03-02 18:47:32 +00:00
patacongo
fb15f94d5e Fix warning introduced with last checkin
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3262 42af7a65-404d-4744-a932-0658087f49c3
2011-01-19 20:18:31 +00:00
patacongo
60c0de010a Fix issues detected by CppCheck tool
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3261 42af7a65-404d-4744-a932-0658087f49c3
2011-01-19 20:02:23 +00:00
patacongo
2f0e15334b Switching to C99 stdint/stdbool.h types
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2342 42af7a65-404d-4744-a932-0658087f49c3
2009-12-15 01:39:03 +00:00
patacongo
e72dce9e1b Consolidate buffer dumping; fix all occurrences of 'the the'
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1951 42af7a65-404d-4744-a932-0658087f49c3
2009-06-25 17:44:35 +00:00
patacongo
bf19cece2d Fix heap setup problem
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1793 42af7a65-404d-4744-a932-0658087f49c3
2009-05-19 15:17:28 +00:00
patacongo
c0f9c73868 ez80f910200zco port
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1436 42af7a65-404d-4744-a932-0658087f49c3
2008-12-08 18:44:43 +00:00
patacongo
392f59af18 Typo in comments
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1221 42af7a65-404d-4744-a932-0658087f49c3
2008-11-13 14:46:47 +00:00
patacongo
360cc0a648 typos
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@799 42af7a65-404d-4744-a932-0658087f49c3
2008-08-02 17:22:22 +00:00
patacongo
291270beb5 Using tool-specific clean
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@545 42af7a65-404d-4744-a932-0658087f49c3
2008-01-10 18:23:08 +00:00
patacongo
e881da738c Compiles with ZDS-II
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@540 42af7a65-404d-4744-a932-0658087f49c3
2008-01-09 22:53:52 +00:00
patacongo
83f36eac7d Changes for ZNeo compile
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@539 42af7a65-404d-4744-a932-0658087f49c3
2008-01-09 14:20:31 +00:00
patacongo
d8b91b19e5 Make logic reorganized for non-GNU toolchain
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@528 42af7a65-404d-4744-a932-0658087f49c3
2008-01-08 17:06:21 +00:00
patacongo
131931c877 Reduce make output
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@526 42af7a65-404d-4744-a932-0658087f49c3
2008-01-08 13:41:00 +00:00
patacongo
71f2d3d25d ZNeo compiler now works
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@525 42af7a65-404d-4744-a932-0658087f49c3
2008-01-08 13:02:47 +00:00
patacongo
c5a589f25b Add support for tools that can't make dependencies
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@522 42af7a65-404d-4744-a932-0658087f49c3
2008-01-08 00:19:24 +00:00
patacongo
772ad744e0 Integrating z80
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@463 42af7a65-404d-4744-a932-0658087f49c3
2007-12-30 18:13:22 +00:00
patacongo
b72a7ab50b Debug can now be selectively enabled by subystem
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@404 42af7a65-404d-4744-a932-0658087f49c3
2007-11-23 22:32:52 +00:00
patacongo
01207cc66e Added network init; refactored some header files
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@338 42af7a65-404d-4744-a932-0658087f49c3
2007-09-09 11:58:50 +00:00
patacongo
14c19aa3d1 Fixed several more realloc errors
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@296 42af7a65-404d-4744-a932-0658087f49c3
2007-06-30 22:24:19 +00:00
patacongo
3237757a86 Fix error in realloc when memory is extended downward
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@295 42af7a65-404d-4744-a932-0658087f49c3
2007-06-30 20:38:16 +00:00
patacongo
08199e1216 Add 8052 IRQ test; Fix places where IDLE task could try to wait on semaphores
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@61 42af7a65-404d-4744-a932-0658087f49c3
2007-03-14 18:58:21 +00:00
patacongo
b4fd3cdcf4 task_create now accepts variable number of arguments; 8051 bringup changes
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@56 42af7a65-404d-4744-a932-0658087f49c3
2007-03-11 17:37:47 +00:00
patacongo
a0dffbf481 Fix c5471 signal handling + deallocation bug
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@44 42af7a65-404d-4744-a932-0658087f49c3
2007-03-08 18:34:11 +00:00
patacongo
4b1edc8ea5 Add capability to manager memory in discontiguous regions.
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@35 42af7a65-404d-4744-a932-0658087f49c3
2007-03-04 15:23:22 +00:00
patacongo
a60059d9d0 Finally, a clean SDCC compile
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@20 42af7a65-404d-4744-a932-0658087f49c3
2007-02-27 21:17:21 +00:00
patacongo
b8f3bd857b Progress toward clean SDCC compilation
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@18 42af7a65-404d-4744-a932-0658087f49c3
2007-02-21 21:55:16 +00:00
patacongo
4881fed8bf Working toward compiler independence: Removed inline funcs
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@15 42af7a65-404d-4744-a932-0658087f49c3
2007-02-20 23:16:24 +00:00
patacongo
3c0e634aee Eliminating GCC dependencies
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@14 42af7a65-404d-4744-a932-0658087f49c3
2007-02-20 22:39:56 +00:00
patacongo
c42c9f4aef Fix problems in state restore logic
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5 42af7a65-404d-4744-a932-0658087f49c3
2007-02-18 15:28:23 +00:00
patacongo
b08a86171f NuttX RTOS
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3 42af7a65-404d-4744-a932-0658087f49c3
2007-02-17 23:21:28 +00:00