commit | 366651d9ef0e03f97b1e1d2b6188f2b452044d1c | [log] [tgz] |
---|---|---|
author | Marshall Zhan <marshall.zhan.wiwynn@gmail.com> | Thu Aug 22 17:10:44 2024 +0800 |
committer | Marshall Zhan <marshall.zhan.wiwynn@gmail.com> | Fri Oct 04 11:25:37 2024 +0800 |
tree | 7a1f9594f1cf5b105ace3f150921abe4c1201bc7 | |
parent | 6498f9fa9792ef0c14dab4aca3d38a674f6402cd [diff] |
log-handler: Set the end of the file as the file size The file descriptor is lost after system AC cycle. The log file will grow indefinitely if the log recorded does not exceed the maximum log size after each AC cycle. Change-Id: If23d68b08817d54731dd6eff8a42e9eb476b6437 Fixes: 46d9ef298f2e ("Do not truncate log files after reboot") Signed-off-by: Marshall Zhan <marshall.zhan.wiwynn@gmail.com>
To build this project, run the following shell commands:
meson setup build meson compile -C build
To test:
dbus-run-session meson test -C build
Running the server requires a serial port (e.g. /dev/ttyS0):
touch obmc-console.conf ./obmc-console-server --config obmc-console.conf ttyS0
To connect to the server, simply run the client:
./obmc-console-client
To disconnect the client, use the standard ~.
combination.
This shows how the host UART connection is abstracted within the BMC as a Unix domain socket.
+---------------------------------------------------------------------------------------------+ | | | obmc-console-client unix domain socket obmc-console-server | | | | +----------------------+ +------------------------+ | | | client.2200.conf | +---------------------+ | server.ttyVUART0.conf | | +---+--+ +----------------------+ | | +------------------------+ +--------+-------+ Network | 2200 +--> +->+ @obmc-console.host0 +<-+ <--+ /dev/ttyVUART0 | UARTs +---+--+ | console-id = "host0" | | | | console-id = "host0" | +--------+-------+ | | | +---------------------+ | | | | +----------------------+ +------------------------+ | | | | | | | +---------------------------------------------------------------------------------------------+
This supports multiple independent consoles. The console-id
is a unique portion for the unix domain socket created by the obmc-console-server instance. The server needs to know this because it needs to know what to name the pipe; the client needs to know it as it needs to form the abstract socket name to which to connect.
In some hardware designs, multiple UARTS may be available behind a Mux. Please reference docs/mux-support.md in that case.
For developing obmc-console, we can use pseudo terminals (pty's) in Linux.
The socat command will output names of 2 pty's, one of which is the master and the other one is the slave. The master pty can be used to emulate a UART.
$ socat -d -d pty,raw,echo=0,link=pty1 pty,raw,echo=0,link=pty2 $ obmc-console-server --console-id dev $(realpath pty2) $ obmc-console-client -i dev # this message should appear for the client $ echo "hi" > pty1