1ab3dfcab4
It's been a long standing issue that init cannot respond to property set messages when it is running a builtin command. This is particularly problematic when the commands involve IPC to vold or other daemons, as it prevents them from being able to set properties. This change has init run property service in a thread, which eliminates the above issue. This change may also serve as a starting block to running property service in an entirely different process to better isolate init from handling property requests. Reland: during reboot, init stops processing property_changed messages from property service, since it will not act on these anyway. This had an unexpected effect of causing future property_set calls to block indefinitely, since the buffer between init and property_service was filling up and the send() call from property_service would then block. This change has init tell property_service to stop sending it property_changed messages once reboot begins. Test: CF boots, walleye boots, properties are set appropriately Change-Id: I26902708e8be788caa6dbcf4b6d2968d90962785
41 lines
No EOL
1.2 KiB
Protocol Buffer
41 lines
No EOL
1.2 KiB
Protocol Buffer
/*
|
|
* Copyright (C) 2017 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
syntax = "proto2";
|
|
option optimize_for = LITE_RUNTIME;
|
|
|
|
message SubcontextCommand {
|
|
message ExecuteCommand { repeated string args = 1; }
|
|
message ExpandArgsCommand { repeated string args = 1; }
|
|
oneof command {
|
|
ExecuteCommand execute_command = 1;
|
|
ExpandArgsCommand expand_args_command = 2;
|
|
}
|
|
}
|
|
|
|
message SubcontextReply {
|
|
message Failure {
|
|
optional string error_string = 1;
|
|
optional int32 error_errno = 2;
|
|
}
|
|
message ExpandArgsReply { repeated string expanded_args = 1; }
|
|
|
|
oneof reply {
|
|
bool success = 1;
|
|
Failure failure = 2;
|
|
ExpandArgsReply expand_args_reply = 3;
|
|
}
|
|
} |