# HG changeset patch # User jfp <jf.pieronne@laposte.net> # Date 1683904363 -7200 # Fri May 12 17:12:43 2023 +0200 # Node ID d58f348ab0b6919fec08f0b0ce28bbbf40a90313 # Parent 34746597d2be62410295ad1dd8a8c4fae713da01 Define LNM$PERMANENT_MAILBOX (/user) to SUPERVISORD_TABLE diff --git a/supervisorctl.py b/supervisorctl.py --- a/supervisorctl.py +++ b/supervisorctl.py @@ -4,10 +4,11 @@ import json from typing import Any, Set, Tuple -from ovms import cmbdef, iodef, mbxqio, prvdef, psldef, starlet +from ovms import cmbdef, iodef, mbxqio, prvdef, psldef, starlet, lnmdef +from ovms.rtl import lib supervisorctl_pwd = '' -# programs_name: Set[str] = set(('ALL',)) +supervisord_table_name = b'SUPERVISORD_TABLE' programs_name: Set[str] = set() @@ -140,6 +141,22 @@ print('stop all\t\tStop all processes') +def logicals_init(): + global supervisord_table_name + starlet.crelnt( + attr=lnmdef.LNM_M_CREATE_IF, + promsk=0xE000, + tabnam=supervisord_table_name, + partab=b'LNM$SYSTEM_DIRECTORY', + acmode=psldef.PSL_C_SUPER, + ) + lib.set_logical( + b'LNM$PERMANENT_MAILBOX', + supervisord_table_name, + b'LNM$PROCESS_DIRECTORY', + ) + + def mbx_init() -> Tuple[int, int]: s, chancmd = starlet.crembx( prmflg=1, @@ -192,9 +209,10 @@ name = sn.split(':')[-1].upper() programs_name.add(name) - # Required privilege: PRMMBX - starlet.setprv(1, prvdef.PRV_M_PRMMBX) + # Required privilege: PRMMBX, SYSNAM + starlet.setprv(1, prvdef.PRV_M_PRMMBX | prvdef.PRV_M_SYSNAM) + logicals_init() chan, chan_r = mbx_init() with ( mbxqio.MBXQIO(channel=chan) as mcmd, diff --git a/supervisord.py b/supervisord.py --- a/supervisord.py +++ b/supervisord.py @@ -309,6 +309,7 @@ prcnam=self.process_name, mbxunt=Program.mbxunt, ) + lib.set_logical( self.process_name + b'_PID', hex(pid)[2:].upper(), @@ -422,13 +423,18 @@ def logicals_init(): global supervisord_table_name - starlet.crelnt( + s = starlet.crelnt( attr=lnmdef.LNM_M_CREATE_IF, promsk=0xE000, tabnam=supervisord_table_name, partab=b'LNM$SYSTEM_DIRECTORY', acmode=psldef.PSL_C_SUPER, ) + lib.set_logical( + b'LNM$PERMANENT_MAILBOX', + supervisord_table_name, + b'LNM$PROCESS_DIRECTORY', + ) def mbx_init() -> Tuple[int, int, int, int]: @@ -755,8 +761,8 @@ ) Program.programs[name] = p + logicals_init() chan, Program.mbxunt, chancmd, chancmd_r = mbx_init() - logicals_init() run(chan, chancmd, chancmd_r)