mirror of
https://gitee.com/openharmony/startup_init
synced 2024-10-07 06:03:32 +00:00
commit
15c4de23b6
@ -20,6 +20,7 @@ import argparse
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
def decode_cfg_line(data):
|
def decode_cfg_line(data):
|
||||||
data.replace('\n', '').replace('\r', '')
|
data.replace('\n', '').replace('\r', '')
|
||||||
data = data.strip()
|
data = data.strip()
|
||||||
@ -30,17 +31,19 @@ def decode_cfg_line(data):
|
|||||||
return "", ""
|
return "", ""
|
||||||
return strs[0].strip(), strs[1].strip()
|
return strs[0].strip(), strs[1].strip()
|
||||||
|
|
||||||
|
|
||||||
def get_param_from_cfg(cfg_name):
|
def get_param_from_cfg(cfg_name):
|
||||||
dict = {}
|
data_dict = {}
|
||||||
with open(cfg_name) as afile:
|
with open(cfg_name) as afile:
|
||||||
data = afile.readline()
|
data = afile.readline()
|
||||||
while data:
|
while data:
|
||||||
name, value = decode_cfg_line(data)
|
name, value = decode_cfg_line(data)
|
||||||
if len(name) != 0 and len(value) != 0:
|
if len(name) != 0 and len(value) != 0:
|
||||||
dict[name] = value
|
data_dict[name] = value
|
||||||
print("sample file name={%s %s}"%(name, value))
|
print("sample file name={%s %s}" % (name, value))
|
||||||
data = afile.readline()
|
data = afile.readline()
|
||||||
return dict
|
return data_dict
|
||||||
|
|
||||||
|
|
||||||
def decode_code_line(data):
|
def decode_code_line(data):
|
||||||
data.replace('\n', '').replace('\r', '')
|
data.replace('\n', '').replace('\r', '')
|
||||||
@ -53,21 +56,23 @@ def decode_code_line(data):
|
|||||||
strs = data.split(',')
|
strs = data.split(',')
|
||||||
if len(strs) <= 1:
|
if len(strs) <= 1:
|
||||||
return "", ""
|
return "", ""
|
||||||
return strs[0].strip(), data[len(strs[0]) + 1: ].strip()
|
return strs[0].strip(), data[len(strs[0]) + 1:].strip()
|
||||||
|
|
||||||
|
|
||||||
def get_param_from_c_code(code_name):
|
def get_param_from_c_code(code_name):
|
||||||
dict = {}
|
data_dict = {}
|
||||||
with open(code_name, "r+") as afile:
|
with open(code_name, "r+") as afile:
|
||||||
data = afile.readline()
|
data = afile.readline()
|
||||||
while data:
|
while data:
|
||||||
name, value = decode_code_line(data)
|
name, value = decode_code_line(data)
|
||||||
if len(name) != 0 and len(value) != 0:
|
if len(name) != 0 and len(value) != 0:
|
||||||
dict[name] = value
|
data_dict[name] = value
|
||||||
data = afile.readline()
|
data = afile.readline()
|
||||||
afile.truncate(0)
|
afile.truncate(0)
|
||||||
return dict
|
return data_dict
|
||||||
|
|
||||||
def write_map_to_code(code_name, dict):
|
|
||||||
|
def write_map_to_code(code_name, data_dict):
|
||||||
try:
|
try:
|
||||||
with open(code_name, "w") as f:
|
with open(code_name, "w") as f:
|
||||||
# start with 0
|
# start with 0
|
||||||
@ -91,13 +96,13 @@ def write_map_to_code(code_name, dict):
|
|||||||
f.write(os.linesep + os.linesep)
|
f.write(os.linesep + os.linesep)
|
||||||
# write data
|
# write data
|
||||||
f.write('static Node g_paramDefCfgNodes[] = {' + os.linesep)
|
f.write('static Node g_paramDefCfgNodes[] = {' + os.linesep)
|
||||||
for name, value in dict.items():
|
for name, value in data_dict.items():
|
||||||
if (value.startswith("\"")):
|
if (value.startswith("\"")):
|
||||||
str = " PARAM_MAP({0}, {1})".format(name, value)
|
tmp_str = " PARAM_MAP({0}, {1})".format(name, value)
|
||||||
f.write(str + os.linesep)
|
f.write(tmp_str + os.linesep)
|
||||||
else:
|
else:
|
||||||
str = " PARAM_MAP({0}, \"{1}\")".format(name, value)
|
tmp_str = " PARAM_MAP({0}, \"{1}\")".format(name, value)
|
||||||
f.write(str + os.linesep)
|
f.write(tmp_str + os.linesep)
|
||||||
f.write('};' + os.linesep + os.linesep)
|
f.write('};' + os.linesep + os.linesep)
|
||||||
|
|
||||||
#end
|
#end
|
||||||
@ -110,19 +115,21 @@ def write_map_to_code(code_name, dict):
|
|||||||
f.write(os.linesep)
|
f.write(os.linesep)
|
||||||
f.truncate()
|
f.truncate()
|
||||||
except IOError:
|
except IOError:
|
||||||
print("Error: open or write file %s fail"%{code_name})
|
print("Error: open or write file %s fail" % {code_name})
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def add_to_code_dict(code_dict, cfg_dict, high = True):
|
|
||||||
|
def add_to_code_dict(code_dict, cfg_dict, high=True):
|
||||||
for name, value in cfg_dict.items():
|
for name, value in cfg_dict.items():
|
||||||
# check if name exit
|
# check if name exit
|
||||||
has_key = name in code_dict #code_dict.has_key(name)
|
has_key = name in code_dict
|
||||||
if has_key and high:
|
if has_key and high:
|
||||||
code_dict[name] = value
|
code_dict[name] = value
|
||||||
elif not has_key:
|
elif not has_key:
|
||||||
code_dict[name] = value
|
code_dict[name] = value
|
||||||
return code_dict
|
return code_dict
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description='A common change param.para file to h.')
|
description='A common change param.para file to h.')
|
||||||
|
@ -74,7 +74,7 @@ static void RunSandbox(const std::string &sandboxName)
|
|||||||
|
|
||||||
static void EnterShell()
|
static void EnterShell()
|
||||||
{
|
{
|
||||||
char *argv[] = { const_cast<char *>("sh"), NULL };
|
char *argv[] = { const_cast<char *>("sh"), nullptr };
|
||||||
char *envp[] = { nullptr };
|
char *envp[] = { nullptr };
|
||||||
if (execve("/system/bin/sh", argv, envp) != 0) {
|
if (execve("/system/bin/sh", argv, envp) != 0) {
|
||||||
std::cout << "execve sh failed! err = "<< errno << std::endl;
|
std::cout << "execve sh failed! err = "<< errno << std::endl;
|
||||||
|
@ -153,15 +153,9 @@ int SwitchRoot(const char *newRoot)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct stat oldRootStat = {};
|
struct stat oldRootStat = {};
|
||||||
if (stat("/", &oldRootStat) != 0) {
|
INIT_ERROR_CHECK(stat("/", &oldRootStat) == 0, return -1, "Failed to get old root \"/\" stat");
|
||||||
INIT_LOGE("Failed to get old root \"/\" stat");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
DIR *oldRoot = opendir("/");
|
DIR *oldRoot = opendir("/");
|
||||||
if (oldRoot == NULL) {
|
INIT_ERROR_CHECK(oldRoot != NULL, return -1, "Failed to open root dir \"/\"");
|
||||||
INIT_LOGE("Failed to open root dir \"/\"");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
struct stat newRootStat = {};
|
struct stat newRootStat = {};
|
||||||
if (stat(newRoot, &newRootStat) != 0) {
|
if (stat(newRoot, &newRootStat) != 0) {
|
||||||
INIT_LOGE("Failed to get new root \" %s \" stat", newRoot);
|
INIT_LOGE("Failed to get new root \" %s \" stat", newRoot);
|
||||||
|
@ -91,9 +91,11 @@ bool SetSeccompPolicyWithName(const char *filterName)
|
|||||||
strlen(filterName) + strlen(FILTER_NAME_FORMAT) - strlen("%s"), \
|
strlen(filterName) + strlen(FILTER_NAME_FORMAT) - strlen("%s"), \
|
||||||
FILTER_NAME_FORMAT, filterName);
|
FILTER_NAME_FORMAT, filterName);
|
||||||
PLUGIN_CHECK(rc != -1, return false, "snprintf_s faiVribleName failed");
|
PLUGIN_CHECK(rc != -1, return false, "snprintf_s faiVribleName failed");
|
||||||
|
const char *filterLibRealPath = realpath(filterLibPath, NULL);
|
||||||
|
PLUGIN_CHECK(filterLibRealPath != NULL, return false, "format filter lib real path failed");
|
||||||
|
|
||||||
void *handler = dlopen(filterLibPath, RTLD_LAZY);
|
void *handler = dlopen(filterLibRealPath, RTLD_LAZY);
|
||||||
PLUGIN_CHECK(handler != NULL, return false, "dlopen %s failed", filterLibPath);
|
PLUGIN_CHECK(handler != NULL, return false, "dlopen %s failed", filterLibRealPath);
|
||||||
|
|
||||||
filterPtr = (struct sock_filter *)dlsym(handler, filterVaribleName);
|
filterPtr = (struct sock_filter *)dlsym(handler, filterVaribleName);
|
||||||
PLUGIN_CHECK(filterPtr != NULL, dlclose(handler);
|
PLUGIN_CHECK(filterPtr != NULL, dlclose(handler);
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#define BUFFER_LENGTH 5
|
#define BUFFER_LENGTH 5
|
||||||
#define FD_COUNT 2
|
#define FD_COUNT 2
|
||||||
|
#define SLEEP_TIME 3
|
||||||
#define ENV_FD_HOLD_PREFIX "OHOS_FD_HOLD_"
|
#define ENV_FD_HOLD_PREFIX "OHOS_FD_HOLD_"
|
||||||
|
|
||||||
static void SaveFds(const char *serviceName, int argc, char **argv)
|
static void SaveFds(const char *serviceName, int argc, char **argv)
|
||||||
@ -70,13 +71,13 @@ int main(int argc, char **argv)
|
|||||||
free(fds);
|
free(fds);
|
||||||
outfdCount = 0;
|
outfdCount = 0;
|
||||||
while (1) {
|
while (1) {
|
||||||
sleep(3);
|
sleep(SLEEP_TIME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
char *files[] = {"/data/test/1", "/data/test/2"};
|
char *files[] = {"/data/test/1", "/data/test/2"};
|
||||||
SaveFds("fd_holder_test", FD_COUNT, (char **)files);
|
SaveFds("fd_holder_test", FD_COUNT, (char **)files);
|
||||||
while (1) {
|
while (1) {
|
||||||
sleep(3);
|
sleep(SLEEP_TIME);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ static void *ThreadRun(void *data)
|
|||||||
parameterCtrl->empty = 0;
|
parameterCtrl->empty = 0;
|
||||||
const char *paramValue = (config->action == ACTION_ADD) ? "added" : "removed";
|
const char *paramValue = (config->action == ACTION_ADD) ? "added" : "removed";
|
||||||
INIT_LOGI("[uevent] SystemSetParameter %s act %s", config->parameter, paramValue);
|
INIT_LOGI("[uevent] SystemSetParameter %s act %s", config->parameter, paramValue);
|
||||||
size_t len = sprintf_s(paramName, sizeof(paramName), "startup.uevent.%s", config->parameter);
|
int len = sprintf_s(paramName, sizeof(paramName), "startup.uevent.%s", config->parameter);
|
||||||
if ((len <= 0) || (SystemSetParameter(paramName, paramValue) != 0)) {
|
if ((len <= 0) || (SystemSetParameter(paramName, paramValue) != 0)) {
|
||||||
INIT_LOGE("[uevent] SystemSetParameter %s failed", config->parameter);
|
INIT_LOGE("[uevent] SystemSetParameter %s failed", config->parameter);
|
||||||
pthread_mutex_lock(&(parameterCtrl->parameterLock));
|
pthread_mutex_lock(&(parameterCtrl->parameterLock));
|
||||||
|
@ -148,7 +148,7 @@ static void HandleRequiredDynamicDeviceNodes(const struct Uevent *uevent)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (idx < sizeof(DYNAMIC_DEVICES)/sizeof(DYNAMIC_DEVICES[0])) {
|
while (idx < sizeof(DYNAMIC_DEVICES) / sizeof(DYNAMIC_DEVICES[0])) {
|
||||||
if (strcmp(uevent->deviceName, DYNAMIC_DEVICES[idx].dev + DEV_NODE_PATH_PREFIX_LEN) != 0) {
|
if (strcmp(uevent->deviceName, DYNAMIC_DEVICES[idx].dev + DEV_NODE_PATH_PREFIX_LEN) != 0) {
|
||||||
idx++;
|
idx++;
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user