Commit Graph

10 Commits

Author SHA1 Message Date
Guillaume Souchere
445db75612 fix(linux): implement pthread-based locks for soft-preemption safety
The Linux target's sys/lock.h provided no-op inline stubs, which was
safe only under the assumption of single-threaded execution.  With the
new FreeRTOS Linux simulator using soft preemption, an outgoing task
can still run concurrently with the incoming task until it reaches a
yield point, making no-op locks unsafe.

Replace the no-op implementation with real pthread mutexes:

- Change _lock_t from `typedef int` to `typedef void *` (pointer to a
  heap-allocated pthread_mutex_t).
- Implement all _lock_* functions in a new lock.c, supporting both
  normal and recursive mutexes.
- Zero-initialized locks are lazily created on first acquire using
  double-checked locking, preserving newlib/esp_libc semantics.
- Add lock.c unconditionally to the linux component sources and link
  pthread.
2026-06-04 11:36:34 +02:00
Frantisek Hrbata
4d5645e54a fix(linux/cmake): fix the usage of the uninitialized variable
The `srcs` list variable is used without initialization when building
for linux target. Initialize it explicitly.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2026-01-21 16:48:44 +01:00
Jakob Hasse
ae15f1c4f9 refactor(linux): deprecated esp_linux_helper.h 2024-07-30 16:41:28 +02:00
Jakob Hasse
4d629be602 refactor(linux): Unified libbsd handling
* Users can now use libbsd string.h and sys/cdefs.h functionality
  (e.g., strlcpy, containerof) on Linux by just including
  string.h or sys/cdefs.h. In other words, the includes are the same
  on the Linux target as well as on chips targets (ESP32, etc.).
* libbsd linking is done by the linux component (belongs to common
  components) now instead of handling it separately in each component
2024-03-08 12:26:54 +08:00
Jakob Hasse
48d121653b feat(linux): added fls() on Linux 2024-02-07 17:56:16 +08:00
Ivan Grokhotkov
c90b6c18c9 fix(linux): define __assert_func for IDF_TARGET=linux on macOS 2023-12-19 23:01:00 +01:00
Ivan Grokhotkov
7b8f69404f feat(linux): provide getrandom implementation for macOS
This makes getrandom(2) usable when compiling with IDF_TARGET=linux
on a macOS host.
2023-12-19 15:11:32 +01:00
David Cermak
b2af4d9689 lwip/linux: Add lwip support for networking component under linux
linux/lwip: Wrap some IO posix functions
* to workaourd the FreeRTOS EINTR issue (when building without lwip)
* to correctly choose the sub-system based on fd (when building with
lwip) -- passing control to either linux/system or to lwip
This commit also addapts tapio-if to provide DHCP client by default and
configurable settings for static IP
2023-05-05 05:03:39 +00:00
Harshit Malpani
0cc243a8cc esp_http_client: remove dependency of esp_stubs from esp_http_client. Add esp_event stubs in linux component 2023-03-15 11:48:11 +05:30
Jakob Hasse
c9984faaef [mocks]: freertos mock
[esp_event]: added preliminary host-based tests
2021-08-06 17:08:21 +08:00