Skip to content
Snippets Groups Projects
Commit d58f348ab0b6 authored by jfp's avatar jfp
Browse files

Define LNM$PERMANENT_MAILBOX (/user) to SUPERVISORD_TABLE

parent 34746597d2be
Branches
No related tags found
No related merge requests found
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
import json import json
from typing import Any, Set, Tuple 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 = '' supervisorctl_pwd = ''
...@@ -8,6 +9,6 @@ ...@@ -8,6 +9,6 @@
supervisorctl_pwd = '' supervisorctl_pwd = ''
# programs_name: Set[str] = set(('ALL',)) supervisord_table_name = b'SUPERVISORD_TABLE'
programs_name: Set[str] = set() programs_name: Set[str] = set()
...@@ -140,6 +141,22 @@ ...@@ -140,6 +141,22 @@
print('stop all\t\tStop all processes') 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]: def mbx_init() -> Tuple[int, int]:
s, chancmd = starlet.crembx( s, chancmd = starlet.crembx(
prmflg=1, prmflg=1,
...@@ -192,6 +209,6 @@ ...@@ -192,6 +209,6 @@
name = sn.split(':')[-1].upper() name = sn.split(':')[-1].upper()
programs_name.add(name) programs_name.add(name)
# Required privilege: PRMMBX # Required privilege: PRMMBX, SYSNAM
starlet.setprv(1, prvdef.PRV_M_PRMMBX) starlet.setprv(1, prvdef.PRV_M_PRMMBX | prvdef.PRV_M_SYSNAM)
...@@ -197,4 +214,5 @@ ...@@ -197,4 +214,5 @@
logicals_init()
chan, chan_r = mbx_init() chan, chan_r = mbx_init()
with ( with (
mbxqio.MBXQIO(channel=chan) as mcmd, mbxqio.MBXQIO(channel=chan) as mcmd,
......
...@@ -309,6 +309,7 @@ ...@@ -309,6 +309,7 @@
prcnam=self.process_name, prcnam=self.process_name,
mbxunt=Program.mbxunt, mbxunt=Program.mbxunt,
) )
lib.set_logical( lib.set_logical(
self.process_name + b'_PID', self.process_name + b'_PID',
hex(pid)[2:].upper(), hex(pid)[2:].upper(),
...@@ -422,10 +423,10 @@ ...@@ -422,10 +423,10 @@
def logicals_init(): def logicals_init():
global supervisord_table_name global supervisord_table_name
starlet.crelnt( s = starlet.crelnt(
attr=lnmdef.LNM_M_CREATE_IF, attr=lnmdef.LNM_M_CREATE_IF,
promsk=0xE000, promsk=0xE000,
tabnam=supervisord_table_name, tabnam=supervisord_table_name,
partab=b'LNM$SYSTEM_DIRECTORY', partab=b'LNM$SYSTEM_DIRECTORY',
acmode=psldef.PSL_C_SUPER, acmode=psldef.PSL_C_SUPER,
) )
...@@ -426,9 +427,14 @@ ...@@ -426,9 +427,14 @@
attr=lnmdef.LNM_M_CREATE_IF, attr=lnmdef.LNM_M_CREATE_IF,
promsk=0xE000, promsk=0xE000,
tabnam=supervisord_table_name, tabnam=supervisord_table_name,
partab=b'LNM$SYSTEM_DIRECTORY', partab=b'LNM$SYSTEM_DIRECTORY',
acmode=psldef.PSL_C_SUPER, 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]: def mbx_init() -> Tuple[int, int, int, int]:
...@@ -755,4 +761,5 @@ ...@@ -755,4 +761,5 @@
) )
Program.programs[name] = p Program.programs[name] = p
logicals_init()
chan, Program.mbxunt, chancmd, chancmd_r = mbx_init() chan, Program.mbxunt, chancmd, chancmd_r = mbx_init()
...@@ -758,5 +765,4 @@ ...@@ -758,5 +765,4 @@
chan, Program.mbxunt, chancmd, chancmd_r = mbx_init() chan, Program.mbxunt, chancmd, chancmd_r = mbx_init()
logicals_init()
run(chan, chancmd, chancmd_r) run(chan, chancmd, chancmd_r)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment