summaryrefslogtreecommitdiffstats
path: root/meta-agl-bsp/meta-qcom/recipes-kernel
diff options
context:
space:
mode:
authorStephane Desneux <stephane.desneux@iot.bzh>2017-10-10 19:25:59 +0200
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2017-10-11 14:24:55 +0000
commita5f69d3d31e7d75351f0e2abfc36d35ba39ce304 (patch)
treed578e3847c1cd9d6aeabdd0fd5468cbed2670a3d /meta-agl-bsp/meta-qcom/recipes-kernel
parent8df0659bec1fa361164f6c975a385579f89aa902 (diff)
Fix kernel-devsrc package failing during installdab_4.0.2dab/4.0.24.0.2
This issue is due to the upstream script hardcodes /bin/awk whereas we ship /usr/bin/awk. The installation check will break in this case. Fix it by changing the path in the script. References: - https://lists.yoctoproject.org/pipermail/meta-intel/2017-January/004519.html - https://patchwork.openembedded.org/patch/136699/ - http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-cache/commit/?h=yocto-4.9&id=d0e0a36eec57f5dfa02045776c69092c145f5000 Bug-AGL: SPEC-933 Change-Id: I228351663b764378960051463086e32c81b9b3d2 Signed-off-by: Stephane Desneux <stephane.desneux@iot.bzh> Reviewed-on: https://gerrit.automotivelinux.org/gerrit/11209 Tested-by: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> ci-image-build: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> Reviewed-by: Romain Forlot <romain.forlot@iot.bzh> ci-image-boot-test: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> Reviewed-by: Thomas Rini <trini@konsulko.com> Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Diffstat (limited to 'meta-agl-bsp/meta-qcom/recipes-kernel')
0 files changed, 0 insertions, 0 deletions
r-top-color: #333; background-color: #111; } .markdown-body table tr:nth-child(2n) { background-color: #070707; } .markdown-body span.frame span span { color: #ccc; } .markdown-body code, .markdown-body tt { border-color: #151515; background-color: #070707; } .markdown-body .highlight pre, .markdown-body pre { background-color: #070707; border-color: #333; } .highlight .hll { background-color: #49483e } .highlight { background: #272822; color: #f8f8f2 } .highlight .c { color: #75715e } /* Comment */ .highlight .err { color: #960050; background-color: #1e0010 } /* Error */ .highlight .k { color: #66d9ef } /* Keyword */ .highlight .l { color: #ae81ff } /* Literal */ .highlight .n { color: #f8f8f2 } /* Name */ .highlight .o { color: #f92672 } /* Operator */ .highlight .p { color: #f8f8f2 } /* Punctuation */ .highlight .ch { color: #75715e } /* Comment.Hashbang */ .highlight .cm { color: #75715e } /* Comment.Multiline */ .highlight .cp { color: #75715e } /* Comment.Preproc */ .highlight .cpf { color: #75715e } /* Comment.PreprocFile */ .highlight .c1 { color: #75715e } /* Comment.Single */ .highlight .cs { color: #75715e } /* Comment.Special */ .highlight .gd { color: #f92672 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gi { color: #a6e22e } /* Generic.Inserted */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #75715e } /* Generic.Subheading */ .highlight .kc { color: #66d9ef } /* Keyword.Constant */ .highlight .kd { color: #66d9ef } /* Keyword.Declaration */ .highlight .kn { color: #f92672 } /* Keyword.Namespace */ .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ .highlight .kt { color: #66d9ef } /* Keyword.Type */ .highlight .ld { color: #e6db74 } /* Literal.Date */ .highlight .m { color: #ae81ff } /* Literal.Number */ .highlight .s { color: #e6db74 } /* Literal.String */ .highlight .na { color: #a6e22e } /* Name.Attribute */ .highlight .nb { color: #f8f8f2 } /* Name.Builtin */ .highlight .nc { color: #a6e22e } /* Name.Class */ .highlight .no { color: #66d9ef } /* Name.Constant */ .highlight .nd { color: #a6e22e } /* Name.Decorator */ .highlight .ni { color: #f8f8f2 } /* Name.Entity */ .highlight .ne { color: #a6e22e } /* Name.Exception */ .highlight .nf { color: #a6e22e } /* Name.Function */ .highlight .nl { color: #f8f8f2 } /* Name.Label */ .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ .highlight .nx { color: #a6e22e } /* Name.Other */ .highlight .py { color: #f8f8f2 } /* Name.Property */ .highlight .nt { color: #f92672 } /* Name.Tag */ .highlight .nv { color: #f8f8f2 } /* Name.Variable */ .highlight .ow { color: #f92672 } /* Operator.Word */ .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight { background: #ffffff; } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }

PipeWire Instrument Cluster IPC

This software component provides a communication link between applications running in the Instrument Cluster container and the host container's PipeWire daemon. It is useful when IC applications need to suspend sound output from the host, temporarily, in order to play an emergency sound.

This component is tailored for use in containerized environments. For use in an environment where the IC is a different host, additional work may be required.

libicipc

Most of the functionality is implemented as a library, called icipc.

This library implements both the server-side and the client-side. The server-side is meant to be used by the host, while the client-side is to be used by the applications running in the IC guest.

The library implements a generic unix socket based communication mechanism where a sender (client) can send any data buffer to the receiver (server). The server is always required to respond.

  client  ------- REQUEST -------->  server
  client  <--- REPLY (OK/ERROR) ---  server

The server is also able to track the clients that are connected, individually. When a client connects or disconnects, the server is notified.

The protocol used for communication is a binary serialization of data structures, that aims to be compatible with PipeWire's spa_pod serialization mechanism, which is used in PipeWire's native protocol. The implementation of this protocol is kept private, for now, as it is not needed for the simple use case of sending suspend/resume requests (see below).

module-protocol-ic-ipc

The server-side component is built as a pipewire module, called libpipewire-module-protocol-ic-ipc. It is meant to be executed on a standalone pipewire instance, using the pipewire configuration file provided: pipewire-ic-ipc.conf

To start the server manually, execute:

$ pipewire -c /absolute/path/to/pipewire-ic-ipc.conf

For convenience, systemd .service and .socket units are provided.

The server listens on a socket, which can be specified in the pipewire-ic-ipc.conf file as an argument to the module. When launched via systemd socket activation, the socket is passed on from systemd.

The path of the socket is determined by the same rules as the ones that PipeWire uses for its socket. First, the PIPEWIRE_RUNTIME_DIR environment variable is used. Then, XDG_RUNTIME_DIR, followed by HOME.

This server can accept two requests from its clients:

When multiple clients send SUSPEND, the server keeps track of how many clients have done this and expects an equal amount of RESUME requests before unsetting the suspend.playback metadata key.

When a client sends SUSPEND and then disconnects without sending RESUME, the server considers the disconnection event to be equivalent to a RESUME request. Therefore, clients do not explicitly need to send RESUME before disconnecting.

icipc-client

This is an example client, which is provided for testing & demo purposes. When launched, it presents a command prompt that accepts 2 commands:

To demo it with libpipewire-module-protocol-ic-ipc being the server, use:

Writing IC apps that use libicipc

IC apps that need to use this SUSPEND/RESUME mechanism for sound, should directly use libicipc.

For API documentation, refer to lib/client.h. Clients should use only the API provided in this file.

To link to libicipc, use the provided icipc-0.1 pkg-config package:

$ pkg-config --cflags --libs icipc-0.1

By default, the libicipc library is built statically. If you wish to build a dynamically linked version, pass the -Ddefault_library=dynamic option to meson when compiling pipewire-ic-ipc

Compilation & Running

To compile:

$ meson build
$ ninja -C build

To run tests:

$ ninja -C build test
... or ...
$ meson test -C build

To perform static code analysis using clang-tidy:

$ ninja -C build clang-tidy

Depedencies

No other dependencies are required. The code builds on top of the standard C library only.