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
No related branches found
No related tags found
No related merge requests found
......@@ -4,6 +4,7 @@
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 = ''
......@@ -8,6 +9,6 @@
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,6 +209,6 @@
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)
......@@ -197,4 +214,5 @@
logicals_init()
chan, chan_r = mbx_init()
with (
mbxqio.MBXQIO(channel=chan) as mcmd,
......
......@@ -309,6 +309,7 @@
prcnam=self.process_name,
mbxunt=Program.mbxunt,
)
lib.set_logical(
self.process_name + b'_PID',
hex(pid)[2:].upper(),
......@@ -422,10 +423,10 @@
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,
)
......@@ -426,9 +427,14 @@
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,4 +761,5 @@
)
Program.programs[name] = p
logicals_init()
chan, Program.mbxunt, chancmd, chancmd_r = mbx_init()
......@@ -758,5 +765,4 @@
chan, Program.mbxunt, chancmd, chancmd_r = mbx_init()
logicals_init()
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