Skip to content
Open
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
From 300f7b5c0d5e223441e4687113d55d4350859f9e Mon Sep 17 00:00:00 2001
From: Vijayanand Jitta <quic_vjitta@quicinc.com>
Date: Wed, 13 Dec 2023 11:14:36 +0530
Subject: [PATCH] QCLINUX: libdmabufheap: add an optional TEMP_FAILURE_RETRY
macro copy

Define TEMP_FALURE_RETRY on platforms which use libraries like musl
where it isn't defined.

Upstream-Status: Backport [https://git.codelinaro.org/clo/le/platform/system/memory/libdmabufheap/-/commit/300f7b5c0d5e223441e4687113d55d4350859f9e]
Change-Id: I1d900cb39865100f0a84337e18ab4452c94db355
---

BufferAllocator.cpp | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/BufferAllocator.cpp b/BufferAllocator.cpp
index eff68be..72c8147 100644
--- a/BufferAllocator.cpp
+++ b/BufferAllocator.cpp
@@ -46,6 +46,16 @@ static constexpr char kDmaHeapRoot[] = "/dev/dma_heap/";
static constexpr char kIonDevice[] = "/dev/ion";
static constexpr char kIonSystemHeapName[] = "ion_system_heap";

+#ifndef TEMP_FAILURE_RETRY
+/* Used to retry syscalls that can return EINTR. */
+#define TEMP_FAILURE_RETRY(exp) ({ \
+__typeof(exp) _rc; \
+do { \
+ _rc = (exp); \
+} while (_rc == -1 && errno == EINTR); \
+_rc; })
+#endif
+
#ifndef USE_ION
BufferAllocator::BufferAllocator()
: ion_fd_(-1)
1 change: 1 addition & 0 deletions recipes-bsp/libdmabufheap/qcom-libdmabufheap_1.0.bb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ SRC_URI = " \
${SRCPROJECT};branch=${SRCBRANCH};destsuffix=system/memory/libdmabufheap \
file://kmem.rules \
file://0001-libdmabufheap-Update-generated-libs-version.patch \
file://0002-QCLINUX-libdmabufheap-add-an-optional-TEMP_FAILURE_R.patch \
"

S = "${WORKDIR}/system/memory/libdmabufheap"
Expand Down
2 changes: 1 addition & 1 deletion recipes-connectivity/bluez5/bluez5_%.bbappend
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ inherit systemd
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"


RRECOMMENDS:${PN} += " \
RRECOMMENDS:${PN}:libc-glibc += " \
glibc-gconv-utf-16 \
glibc-gconv-utf-32 \
"
Expand Down
6 changes: 4 additions & 2 deletions recipes-connectivity/cld80211-lib/cld80211-lib_git.bb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ SRCPROJECT = "git://git.codelinaro.org/clo/le/platform/hardware/qcom/wlan.git;pr
SRCBRANCH = "wlan-os-service.qclinux.1.1.r1-rel"
SRCREV = "e12275880fc58775de0b240a9f6c325b7a310ebe"

SRC_URI = "${SRCPROJECT};branch=${SRCBRANCH};destsuffix=hardware/qcom/wlan"
SRC_URI = "${SRCPROJECT};branch=${SRCBRANCH};destsuffix=hardware/qcom/wlan \
file://0001-Add-TEMP_FAILURE_RETRY-macro-if-undefined.patch;patchdir=${UNPACKDIR}/hardware/qcom/wlan \
"

S = "${WORKDIR}/hardware/qcom/wlan/cld80211-lib"
S = "${UNPACKDIR}/hardware/qcom/wlan/cld80211-lib"
CFLAGS += "-I ${STAGING_INCDIR}/libnl3"
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
From e7c81836ae02c88bfa3499387ab5901db1e2e0b8 Mon Sep 17 00:00:00 2001
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
Date: Wed, 26 Nov 2025 14:23:31 +0900
Subject: [PATCH] Add TEMP_FAILURE_RETRY macro if undefined

Needed to build with an alternative libc such as musl.

Upstream-Status: Pending
Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
---
cld80211_lib.c | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/cld80211-lib/cld80211_lib.c b/cld80211-lib/cld80211_lib.c
index e92d8228..9bd3a0e6 100644
--- a/cld80211-lib/cld80211_lib.c
+++ b/cld80211-lib/cld80211_lib.c
@@ -59,6 +59,16 @@

#define SOCK_BUF_SIZE (256*1024)

+#ifndef TEMP_FAILURE_RETRY
+#define TEMP_FAILURE_RETRY(expression) \
+ ({ \
+ long int __result; \
+ do __result = (long int) (expression); \
+ while (__result == -1L && errno == EINTR); \
+ __result; \
+ })
+#endif
+
struct family_data {
const char *group;
int id;
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
From fe9df250e41fe89d7e42b606ad6f3204e4335f71 Mon Sep 17 00:00:00 2001
From: "geayoung.baek" <geayoung.baek@lge.com>
Date: Wed, 23 Apr 2025 17:03:07 +0900
Subject: [PATCH] Fixed Build Error in clang

../audio/opensource/pulseaudio-plugins/modules/pa-pal-plugins/module-pal-card/src/module-pal-card.c:1171:6: error: conflicting types for 'pa__done'
1171 | void pa__done(pa_module *m) {
../audio/opensource/pulseaudio-plugins/modules/pa-pal-plugins/module-pal-voiceui-card/module-pal-voiceui-card.c:1428:6: error: conflicting types for 'pa__done'
1428 | void pa__done(pa_module 3* warningms) generated {.

Upstream-Status: Pending
---
modules/pa-pal-plugins/module-pal-card/src/module-pal-card.c | 2 ++
.../module-pal-voiceui-card/module-pal-voiceui-card.c | 2 ++
2 files changed, 4 insertions(+)

diff --git a/modules/pa-pal-plugins/module-pal-card/src/module-pal-card.c b/modules/pa-pal-plugins/module-pal-card/src/module-pal-card.c
index 8eac86b..1b87f1c 100644
--- a/modules/pa-pal-plugins/module-pal-card/src/module-pal-card.c
+++ b/modules/pa-pal-plugins/module-pal-card/src/module-pal-card.c
@@ -1067,6 +1067,8 @@ static void pa_pal_card_disable_jack_detection(struct userdata *u, pa_module *m)
u->jacks = NULL;;
}

+void pa__done(pa_module *m);
+
int pa__init(pa_module *m) {
struct userdata *u;
pa_modargs *ma;
diff --git a/modules/pa-pal-plugins/module-pal-voiceui-card/module-pal-voiceui-card.c b/modules/pa-pal-plugins/module-pal-voiceui-card/module-pal-voiceui-card.c
index 6bab613..925bb89 100644
--- a/modules/pa-pal-plugins/module-pal-voiceui-card/module-pal-voiceui-card.c
+++ b/modules/pa-pal-plugins/module-pal-voiceui-card/module-pal-voiceui-card.c
@@ -1387,6 +1387,8 @@ static void load_sound_model(DBusConnection *conn, DBusMessage *msg, void *userd
pa_dbus_send_basic_value_reply(conn, msg, DBUS_TYPE_OBJECT_PATH, &ses_data->obj_path);
}

+void pa__done(pa_module *m);
+
int pa__init(pa_module *m) {
struct pal_voiceui_module_data *m_data;
pa_modargs *ma;
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
From 336fd0f84eddc41742b186fbf18b5dee1e9075cb Mon Sep 17 00:00:00 2001
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
Date: Thu, 27 Nov 2025 07:17:53 +0900
Subject: [PATCH] Have HAVE_SYS_SOCKET_H defined by configure

Fixes a build error with musl:
pa-pal-plugins/1.0/recipe-sysroot/usr/include/pulsecore/core-util.h:303:58: error: unknown type name 'socklen_t'; did you mean 'locale_t'?
303 | int pa_accept_cloexec(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
| ^

Upstream-Status: Pending
Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
---
modules/pa-pal-plugins/configure.ac | 2 ++
utils/pa_bt_audio/configure.ac | 2 ++
2 files changed, 4 insertions(+)

diff --git a/modules/pa-pal-plugins/configure.ac b/modules/pa-pal-plugins/configure.ac
index 3498de3..648272b 100644
--- a/modules/pa-pal-plugins/configure.ac
+++ b/modules/pa-pal-plugins/configure.ac
@@ -83,6 +83,8 @@ AC_ARG_WITH(
[modlibexecdir=$withval], [modlibexecdir="${libdir}/pulseaudio/modules"])
AC_SUBST(modlibexecdir)

+AC_CHECK_HEADERS([sys/socket.h])
+
AC_CONFIG_FILES([ \
Makefile \
])
diff --git a/utils/pa_bt_audio/configure.ac b/utils/pa_bt_audio/configure.ac
index 7d85f6d..44b2b55 100644
--- a/utils/pa_bt_audio/configure.ac
+++ b/utils/pa_bt_audio/configure.ac
@@ -45,6 +45,8 @@ PKG_CHECK_MODULES([LIBPULSE], [libpulse])
AC_SUBST([LIBPULSE_CFLAGS])
AC_SUBST([LIBPULSE_LIBS])

+AC_CHECK_HEADERS([sys/socket.h])
+
AC_CONFIG_FILES([ \
Makefile
pabtaudio.pc
7 changes: 5 additions & 2 deletions recipes-multimedia/audio/pa-pal-plugins_1.0.bb
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,12 @@ SRCPROJECT = "git://git.codelinaro.org/clo/le/platform/vendor/qcom-opensource/pu
SRCBRANCH = "audio-algos.lnx.1.0.r1-rel"
SRCREV = "35adad85a280ea8dc72f5687c1a70ddc9833758c"

SRC_URI = "${SRCPROJECT};branch=${SRCBRANCH};destsuffix=audio/opensource/pulseaudio-plugins"
SRC_URI = "${SRCPROJECT};branch=${SRCBRANCH};destsuffix=audio/opensource/pulseaudio-plugins \
file://0001-Fixed-Build-Error-in-clang.patch;patchdir=${UNPACKDIR}/audio/opensource/pulseaudio-plugins \
file://0002-Have-HAVE_SYS_SOCKET_H-defined-by-configure.patch;patchdir=${UNPACKDIR}/audio/opensource/pulseaudio-plugins \
"

S = "${WORKDIR}/audio/opensource/pulseaudio-plugins/modules/pa-pal-plugins"
S = "${UNPACKDIR}/audio/opensource/pulseaudio-plugins/modules/pa-pal-plugins"

DEPENDS = "qcom-agm pulseaudio qcom-pal qcom-pal-headers qcom-vui-interface-header"
EXTRA_OECONF = " --with-pa_version=17.0 --without-pa-support-card-status"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
From 190a6b96f6272f55a76db7ef5c272d6ef72311dd Mon Sep 17 00:00:00 2001
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
Date: Wed, 26 Nov 2025 16:09:05 +0900
Subject: [PATCH] args: Remove __unused macro

Use __attribute__((unused)) in place of __unused instead as it may cause
a error as when building with musl as below:
qcom-args/git/recipe-sysroot/usr/include/bits/stat.h:17:19: error: expected member name or ';' after declaration specifiers
17 | unsigned __unused[2];
| ~~~~~~~~ ^

Upstream-Status: Pending
Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
---
ar_osal/Makefile.am | 2 +-
ar_osal/src/linux/ar_osal_mutex.c | 4 ++--
ar_osal/src/linux/ar_osal_signal.c | 4 ++--
ar_osal/src/linux/qcom/ar_osal_servreg.c | 6 +++---
4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/ar_osal/Makefile.am b/ar_osal/Makefile.am
index d97466a..6c46d7e 100644
--- a/ar_osal/Makefile.am
+++ b/ar_osal/Makefile.am
@@ -4,7 +4,7 @@ EXTRA_DIST = $(pkgconfig_DATA)

AM_CFLAGS = -Wall -Wno-pointer-to-int-cast -Wno-error=unused-function \
-Wno-error=unused-label
-AM_CFLAGS += -D__unused=__attribute__\(\(__unused__\)\) -DLINUX_ENABLED
+AM_CFLAGS += -DLINUX_ENABLED

AM_CFLAGS += -I$(srcdir)/api \
-I$(top_srcdir)/acdb/ats/transports/diag/linux/inc/
diff --git a/ar_osal/src/linux/ar_osal_mutex.c b/ar_osal/src/linux/ar_osal_mutex.c
index 6509573..6650ead 100644
--- a/ar_osal/src/linux/ar_osal_mutex.c
+++ b/ar_osal/src/linux/ar_osal_mutex.c
@@ -25,13 +25,13 @@ typedef struct osal_int_mutex {
} osal_int_mutex_t;

_IRQL_requires_max_(PASSIVE_LEVEL)
-int32_t ar_osal_mutex_init(_Inout_ ar_osal_mutex_t mutex __unused)
+int32_t ar_osal_mutex_init(_Inout_ ar_osal_mutex_t mutex __attribute__((unused)))
{
return AR_ENOTIMPL;
}

_IRQL_requires_max_(PASSIVE_LEVEL)
-int32_t ar_osal_mutex_deinit(_In_ ar_osal_mutex_t mutex __unused)
+int32_t ar_osal_mutex_deinit(_In_ ar_osal_mutex_t mutex __attribute__((unused)))
{
return AR_ENOTIMPL;
}
diff --git a/ar_osal/src/linux/ar_osal_signal.c b/ar_osal/src/linux/ar_osal_signal.c
index 41d6b4e..d7ad559 100644
--- a/ar_osal/src/linux/ar_osal_signal.c
+++ b/ar_osal/src/linux/ar_osal_signal.c
@@ -27,13 +27,13 @@ typedef struct osal_int_signal {
} osal_int_signal_t;

_IRQL_requires_max_(DISPATCH_LEVEL)
-int32_t ar_osal_signal_init(_In_ ar_osal_signal_t signal __unused)
+int32_t ar_osal_signal_init(_In_ ar_osal_signal_t signal __attribute__((unused)))
{
return AR_ENOTIMPL;
}

_IRQL_requires_max_(DISPATCH_LEVEL)
-int32_t ar_osal_signal_deinit(_In_ ar_osal_signal_t signal __unused)
+int32_t ar_osal_signal_deinit(_In_ ar_osal_signal_t signal __attribute__((unused)))
{
return AR_ENOTIMPL;
}
diff --git a/ar_osal/src/linux/qcom/ar_osal_servreg.c b/ar_osal/src/linux/qcom/ar_osal_servreg.c
index 263e84d..1619e40 100644
--- a/ar_osal/src/linux/qcom/ar_osal_servreg.c
+++ b/ar_osal/src/linux/qcom/ar_osal_servreg.c
@@ -334,7 +334,7 @@ end:
* null on failure.
*/
_IRQL_requires_max_(PASSIVE_LEVEL)
-ar_osal_servreg_t ar_osal_servreg_register(_In_ ar_osal_client_type client_type __unused,
+ar_osal_servreg_t ar_osal_servreg_register(_In_ ar_osal_client_type client_type __attribute__((unused)),
_In_opt_ ar_osal_servreg_callback cb_func,
_In_opt_ void *cb_context,
_In_ ar_osal_servreg_entry_type *domain,
@@ -470,8 +470,8 @@ end:
* Nonzero -- Failure
*/
_IRQL_requires_max_(PASSIVE_LEVEL)
-int32_t ar_osal_servreg_set_state(_In_ ar_osal_servreg_t servreg_handle __unused,
- _In_ ar_osal_service_state_type state __unused)
+int32_t ar_osal_servreg_set_state(_In_ ar_osal_servreg_t servreg_handle __attribute__((unused)),
+ _In_ ar_osal_service_state_type state __attribute__((unused)))
{
return AR_ENOTIMPL;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
From 6b5cce849fa92df159b67d718dfb7574533c8015 Mon Sep 17 00:00:00 2001
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
Date: Wed, 26 Nov 2025 16:14:55 +0900
Subject: [PATCH] args: Use -1 instead of NULL for SOCKET

Otherwise it ends up failed when building with musl as below:
../../../audio/opensource/args/acdb/ats/./transports/tcpip/linux/src/ats_server.cpp:94:8: error: cannot initialize a variable of type 'SOCKET' (aka 'int') with an rvalue of type 'std::nullptr_t'
94 | SOCKET g_server_socket = NULL;
| ^ ~~~~
../../../audio/opensource/args/acdb/ats/./transports/tcpip/linux/src/ats_server.cpp:376:22: error: assigning to 'SOCKET' (aka 'int') from incompatible type 'std::nullptr_t'
376 | g_server_socket = NULL;
| ^~~~
/home/noelma/work/atlas/atlas/tmp/work/armv8-2a-atlas-linux-musl/qcom-args/git/recipe-sysroot/usr/include/unistd.h:21:14: note: expanded from macro 'NULL'
21 | #define NULL nullptr
| ^~~~~~~
../../../audio/opensource/args/acdb/ats/./transports/tcpip/linux/src/ats_server.cpp:461:20: error: assigning to 'SOCKET' (aka 'int') from incompatible type 'std::nullptr_t'
461 | g_server_socket = NULL;
| ^~~~
/home/noelma/work/atlas/atlas/tmp/work/armv8-2a-atlas-linux-musl/qcom-args/git/recipe-sysroot/usr/include/unistd.h:21:14: note: expanded from macro 'NULL'
21 | #define NULL nullptr
| ^~~~~~~
../../../audio/opensource/args/acdb/ats/./transports/tcpip/linux/src/ats_server.cpp:766:10: error: invalid operands to binary expression ('SOCKET' (aka 'int') and 'std::nullptr_t')
766 | if (!IsNull(g_server_socket))
| ^~~~~~~~~~~~~~~~~~~~~~~
../../../audio/opensource/args/acdb/inc/acdb_utility.h:35:26: note: expanded from macro 'IsNull'
35 | #define IsNull(ptr) (ptr == NULL)
| ~~~ ^ ~~~~

Upstream-Status: Pending
Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
---
acdb/ats/transports/tcpip/linux/src/ats_server.cpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/acdb/ats/transports/tcpip/linux/src/ats_server.cpp b/acdb/ats/transports/tcpip/linux/src/ats_server.cpp
index b542b85..159bf8e 100644
--- a/acdb/ats/transports/tcpip/linux/src/ats_server.cpp
+++ b/acdb/ats/transports/tcpip/linux/src/ats_server.cpp
@@ -91,7 +91,7 @@ ats_server_context g_ats_server_context = { 0 };

AtsBufferManager *ats_buffer_manager = NULL;
bool_t g_should_close_server = FALSE;
-SOCKET g_server_socket = NULL;
+SOCKET g_server_socket = -1;

/* ---------------------------------------------------------------------------
* Helper Functions
@@ -373,7 +373,7 @@ void* ats_server_start_routine(void* arg)
if (IsNull(gateway_socket_ptr))
{
ATS_ERR("Insufficient memory to create socket");
- g_server_socket = NULL;
+ g_server_socket = -1;
atsclosesocket(sockfd);
return 0;
}
@@ -458,7 +458,7 @@ void* ats_server_start_routine(void* arg)
}

atsclosesocket(sockfd);
- g_server_socket = NULL;
+ g_server_socket = -1;

return 0;
}
@@ -763,7 +763,7 @@ int32_t ats_server_deinit()

g_should_close_server = TRUE;

- if (!IsNull(g_server_socket))
+ if (g_server_socket != -1)
atsclosesocket(g_server_socket);

status = ar_osal_thread_join_destroy(g_thd_ats_listener);
5 changes: 4 additions & 1 deletion recipes-multimedia/audio/qcom-args_git.bb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ SRCPROJECT = "git://git.codelinaro.org/clo/le/platform/vendor/qcom-opensource/ar
SRCBRANCH = "audio-core.lnx.1.0.r1-rel"
SRCREV = "6fbb752bfa315d4a6bcdde165db7cfd718f4c3f5"

SRC_URI = "${SRCPROJECT};branch=${SRCBRANCH};destsuffix=audio/opensource/args"
SRC_URI = "${SRCPROJECT};branch=${SRCBRANCH};destsuffix=audio/opensource/args \
file://0001-args-Remove-__unused-macro.patch \
file://0002-args-Use-1-instead-of-NULL-for-SOCKET.patch \
"

S = "${WORKDIR}/audio/opensource/args"

Expand Down
Loading