Commit Graph

692 Commits (d801ed340e5d275ae4fd502c1ed15de229c8bb26)

Author SHA1 Message Date
Martin Kojtal 1492dc1e2a
Merge pull request #9685 from scartmell-arm/fix-sleep-tracer-lookup-failing
Fix sleep tracing not finding matching driver during unlock.
2019-02-14 13:16:11 +01:00
Steve Cartmell 3f12c19adf revert: "Refactor sleep tracing driver identifier to be pointer to the driver filepath."
This reverts commit 9a0e8797b9.
2019-02-13 11:27:22 +00:00
Martin Kojtal a477354292
Merge pull request #9693 from naveenkaje/mbed_error_warning_fix
platform: fix build warning in mbed_error
2019-02-13 11:40:46 +01:00
Cruz Monrreal 709e6ff795
Merge pull request #9600 from kjbracey-arm/atomic_exchange_64
Atomic extensions: 64-bit, bool, exchange
2019-02-12 20:28:00 -06:00
Naveen Kaje de271d4ba8 platform: fix build warning in mbed_error
Fix the following build warning

Compile [ 83.4%]: mbed_error.c
[Warning] mbed_error.c@71,21: 'compute_crc32' defined but not used [-Wunused-function]

compute_crc32 usage is guraded with #define, but not the definition.
Use the same #define around the definition of compute_crc32()
2019-02-12 16:20:25 -06:00
Martin Kojtal 10bb66a053
Merge pull request #9424 from SeppoTakalo/ONME-4125
Allows multiple network status listeners
2019-02-11 10:41:35 +01:00
Veijo Pesonen 8bf6c6b9bf platform: includes string.h needed by memcpy and strlen 2019-02-07 12:17:08 +02:00
Kevin Bracey 9e7c65925d Add signed atomics
All signed implementations are inline - either directly or as inline
calls to out-of-line unsigned definitions.
2019-02-05 10:57:23 +02:00
Kevin Bracey 694adaae8b Add atomic exchange 2019-02-05 10:53:30 +02:00
Kevin Bracey a71984093a Add bool atomics 2019-02-05 10:46:40 +02:00
Kevin Bracey f8e3f5dc2c Add 64-bit atomics 2019-02-05 10:45:40 +02:00
Martin Kojtal 6684570dea
Merge pull request #9580 from kjbracey-arm/sharedptr_reset
Fix SharedPtr::reset
2019-02-04 14:41:34 +01:00
Kevin Bracey 94f5646303 Atomics: make barrier placement uniform 2019-02-04 15:08:53 +02:00
Kevin Bracey 52aac4c756 SharedPtr: use atomic load
Use atomic load to read use count.
2019-02-01 12:31:41 +02:00
Kevin Bracey 0b27c9149e Fix SharedPtr::reset
SharedPtr::reset did not actually set the stored pointer value.
Correct this, with other minor tidies:

* Ensure counter is set to NULL if pointer is reset to NULL
* Be consistent about not clearing pointers in decrement_counter().
2019-02-01 10:34:34 +02:00
Cruz Monrreal 0fb2870cfc
Merge pull request #9530 from kjbracey-arm/atomic_singletonptr
Use atomics for double-checked locks (SingletonPtr + __cxa_guard)
2019-01-31 10:22:39 -06:00
Seppo Takalo 207eddc321 Fix copy constructors of Callback objects
->move() operator was not touching unused data fields, therefore
leaving uninitialised data and failing the comparison.
Fixed by initialising all fields to zero before moving.
2019-01-31 15:04:24 +02:00
Cruz Monrreal cc94690363
Merge pull request #9544 from kjbracey-arm/reboot_limit_fix
Halt to enforce reboot limit once only
2019-01-30 17:32:55 -06:00
Kevin Bracey 3056ba730c mbed_die: Use wait_us not wait_ms
mbed_die was calling wait_ms in a critical section - this is deprecated
behaviour, and caused a fatal error in debug builds, potentially leading
to an infinite reboot loop if this was caused due to a reboot limit
halt.

Switch to using wait_us - this is safe in a critical section. This does
trigger a call to mbed_warning, due to the large parameter, but that is
harmless - it doesn't output anything to the console, and won't
overwrite the error context if it already contains something.
2019-01-30 13:29:13 +02:00
Kevin Bracey d55640340d Halt to enforce reboot limit once only
The pre-main check of error_reboot_count was applied repeatedly on
every boot, meaning that once the reboot limit was hit, every subsequent
reset would halt before main, until something managed to clear
or corrupt the error context.

Set the is_error_processed flag before halting, so that when an external
agent resets us while we're halted, we do not report the error and halt
again.
2019-01-30 12:58:25 +02:00
Kevin Bracey 6e3c492cd8 mbed_retarget.cpp: Combine ARMC5 and ARMC6 tests
A couple of places in mbed_retarget.cpp were testing for either ARMC5 or
ARMC6 in a long-winded fashion. Testing for __ARMCC_VERSION being
defined is sufficient.
2019-01-29 17:49:19 +02:00
Kevin Bracey c55329157a Use atomics in __cxa_guard functions
Similar to SingletonPtr, use atomic accesses when loading the guard word
outside the lock, and when storing, to ensure no races for threads that
don't take the lock.

Lack of atomics unlikely to be a problem in current builds, but code
could conceivably be subject to reordering if link-time optimisation was
enabled.
2019-01-29 17:49:18 +02:00
Kevin Bracey 6e41d6cdb7 Make SingletonPtr safe using atomics
SingletonPtr's implementation wasn't totally safe - see "C++ and the
Perils of Double-Checked Locking"by Meyers and Alexandrescu. No problems
observed in practice, but it was potentially susceptible to compiler
optimisation (or maybe even SMP issues).

Now that we have atomic loads and stores, the function can be made safe,
avoiding any potential races for threads that don't take the lock:
ensure that the unlocked load is atomic, and that the pointer store is
atomic.

See https://preshing.com/20130930/double-checked-locking-is-fixed-in-cpp11/
for more discussion.
2019-01-29 16:01:33 +02:00
Kevin Bracey f60bb8f3a7 Second barrier for core_util_atomic_flag_clear
As barriers were added in #9247, review comments pointed out that atomic
stores needed a second barrier, and they got one. But atomic_flag_clear
was missed.
2019-01-29 10:45:20 +02:00
Senthil Ramakrishnan d0b95031c5 Print crash report reboot messages only for non-release builds 2019-01-23 17:40:05 -06:00
Senthil Ramakrishnan cc5969b1ec Remove printf completely and fix the optimization check 2019-01-22 16:04:47 -06:00
Martin Kojtal 4019efb21d
Merge pull request #9399 from paul-szczepanek-arm/fix-null-check
BLE: fix missing null checks on Gap event handler
2019-01-21 13:43:16 +01:00
paul-szczepanek-arm 42e4290160 error when there is no handler 2019-01-18 14:55:38 +00:00
Kevin Bracey 703e44031c Add atomic loads and stores and barriers
Add atomic load and store functions, and add barriers to the existing atomic
functions.

File currently has no explicit barriers - we don't support SMP, so don't
need CPU barriers.

But we do need to worry about compiler barriers - particularly if link time
optimisation is activated so that the compiler can see inside these
functions. The assembler or intrinsics that access PRIMASK for
enter/exit critical act as barriers, but LDREX, STREX and simple
volatile pointer loads and stores do not.
2019-01-18 09:32:04 +02:00
Martin Kojtal 53bb9868ed
Merge pull request #9405 from cmonr/fix-doxy
Travis: Fix doxy-spellcheck job
2019-01-17 17:21:14 +01:00
Martin Kojtal a1daecb200
Merge pull request #9280 from deepikabhavnani/refactor_a
Sleep manager implements all the API's in platform file
2019-01-17 12:40:03 +01:00
Cruz Monrreal II 26696c2f5b Fixed rtc doxygen spelling errors 2019-01-16 23:30:03 -06:00
Cruz Monrreal 5dbb4b9de9
Merge pull request #8497 from kegilbert/gettimeofday_patch
Add get/settimeofday retargets
2019-01-16 22:07:35 -06:00
Deepika a1a90518ed Update the header files
File was moved from hal -> platform folder, hence includes should be
changed accordingly.
2019-01-15 11:47:51 -06:00
deepikabhavnani e2a7b89a90 Sleep manager implements all the API's in platform/mbed_sleep_manager.changes
Not sure why mbed_sleep_manager.c was in hal, moving it to platform
2019-01-15 11:47:51 -06:00
kegilbert dafb01c755 Add get/settimeofday retargets 2019-01-11 14:30:44 -06:00
kegilbert 70b9b753db Add doxygen spellcheck jobs to Travis
Currently tests
    - drivers
    - platform
    - rtos
    - events
    - features/netsocket
2019-01-11 10:22:15 -06:00
Cruz Monrreal f8d7c31a9b
Merge pull request #9188 from SenRamakri/sen_ErrorUrlEnhance
Add more information to error url to enhance error analytics
2019-01-10 00:12:46 -06:00
Martin Kojtal 965f15da82
Merge pull request #9231 from kjbracey-arm/critical_volatile
critical sections: remove unnecessary volatile
2019-01-07 16:26:38 +00:00
Senthil Ramakrishnan f10ed4b286 Add more information to error url to enhance error analytics 2019-01-04 09:24:31 -06:00
bcostm f3b304d3af NUCLEO_H743ZI: enable crash capture 2019-01-04 10:03:36 +01:00
Kevin Bracey 70af016348 critical sections: remove unnecessary volatile
Critical section count/state variables are synchronised by IRQ disabling and
critical section calls themselves, so do not need to be volatile.

This eliminates a couple of unnecessary reads of the counter variable.
2019-01-03 11:06:44 +02:00
Senthil Ramakrishnan daa8b0e5c1 Disable printf in crash reporting for release builds 2018-12-20 13:47:35 -06:00
Alastair D'Silva 2617c5d55b Don't use define checks on DEVICE_FOO macros (mbed code)
The DEVICE_FOO macros are always defined (either 0 or 1).

This patch replaces any instances of a define check on a DEVICE_FOO
macro with value test instead.

Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
2018-12-20 10:16:42 +11:00
Cruz Monrreal 6f576009c7
Merge pull request #9061 from kjbracey-arm/more_mpu_work
More MPU work
2018-12-19 12:32:54 -06:00
Cruz Monrreal 80c6f5f8ee
Merge pull request #8972 from kjbracey-arm/merge_file_truncate
Merge feature-posix branch (FileHandle::truncate)
2018-12-17 14:49:56 -06:00
Kevin Bracey ae17f6ebba Add FileHandle::truncate and ftruncate
Add support for file truncation (or extension) to the abstract API.

No hooks to actual implementations in this commit.
2018-12-14 19:29:28 +02:00
Kevin Bracey bd413f1d82 Disable write buffer in debug builds (M3/M4)
As part of work to improve the debugging of exceptions, have
Mbed OS make an effort to make exceptions more precise in debug builds
at the cost of performance.

Related pyOCD work:

   https://github.com/mbedmicro/pyOCD/pull/430
2018-12-13 16:32:38 +02:00
Russ Butler cdc61c5954 Use MPU platform deinit rather than hal free
Use the MPU through the platform layer rather than through the HAL.
2018-12-11 18:59:58 +02:00
Kevin Bracey 770baa22ea Rework MPU use option
Make the option positively named, and as it is a platform config
option make sure it only affects platform code.

HAL functions still remain available even if platform is told not
to use them.
2018-12-11 13:03:59 +02:00