init: Safely restart services to avoid race conditions.

Previously, service restarts (either an explicit "restart", or a "stop,
start" pair) exhibited a race condition whereby the new (restarting)
service process was often spawned before the old (stopping) process had
terminated.  This may have resulted in the new service process failing to
acquire a limited resource (file lock, socket bind, etc.) that the old
process had not yet released.

Now, a stopping service remains in the SVC_RUNNING state until its exiting
process has been reaped by waitpid.  This prevents a "stop, start" sequence
from spawning a second service process before resources held by the first
are released.  This enables safe service restarts by stopping the service,
waiting for the old service process to terminate, and (only then) starting
the new service process.  In the event of "restarting" an already stopped
service, the previous behavior is maintained whereby the service is simply
started.

This scenario could be special-cased by the restart command, however, we
have observed instances where services are, unintentionally, stopped and
started "too quickly," and so simultaneous processes for the same service
should never be allowed.

Note that this commit alters the behaviors for explicit restarts of
critical and oneshot services.  Previously these serivces would simply be
restarted, whereas now, an explicit restart of a critical service counts as
a crash (which may result in a recovery reboot) and oneshot services go
into the disabled state.
init: Retain traditional restart behavior for critical and oneshot services.

Adds an SVC_RESTART state that's used for an explicit "restart" of a
running service.  This retains the traditional restart behavior for
critical and oneshot services (previously altered by 7e36edd8), whereby
these services are "simply restarted" instead of counting as a crash (for a
critical serivce) or going into the disabled state (for a oneshot service).
added ICS_AUDIO_BLOB ifdefs (ported from CyanogenMod)

Change-Id: Iaee137618b279a2a4184d001763468467ce48cb5
Added htc logging functions (ported from CyanogenMod)

Change-Id: I8dd9eef986189d25179d282ae12ff111d4f91b3f
Rename getline to fs_getline for fs_mgr

fs_mgr defines its own version of getline and uses it
internally. This leads to a build error if getline is
also defined in bionic, since fs_mgr will see readline
as defined internally.

Rename getline in fs_mgr to a local name (fs_getline)
so that there will no longer be any conflicts.

This is needed it we want to add getline in bionic.

Change-Id: I3a32be71a645e122629802d98ff8f9ab9c419e86
Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
set executable permissions on init.d scripts
Add basic Darwin support to libcorkscrew.

This might not seem like much, but it's already better than Mac OS'
backtrace(3).

(cherry picked from commit 2a46f6293f19b9d6100187fbd53088088e671b88)

Change-Id: I197b06c4c19f728ad6f194b2f473bd9dcd99b8a6
Add flush_my_map_info_list() and fix a bug in the Mac load_map_info_list().

(If you fclose(3) rather than pclose(3) a FILE* you got from popen(3),
future popen(3)s fail obscurely, at least on Mac OS.)

(cherry picked from commit 2bf76e143da933184d1392fb9bea3a3896c37e76)

Change-Id: I5578fe06753061b0dbc5ee951ebf31eb2bab0389
Merge changes I5578fe06,I197b06c4

* changes:
  Add flush_my_map_info_list() and fix a bug in the Mac load_map_info_list().
  Add basic Darwin support to libcorkscrew.
Disable darwin build

Change-Id: Ie72bbaab8604cdc14082859b735458a2f73c3074
Merge "Disable darwin build"
init.rc: remove duplicated led-related nodes

Change-Id: Ibee7ef9137594fc4c30d3ab6ee7bdf3515836c62
libsysutils: fix null pointer and memory leak issue

In SocketClient::quoteArg function
1. Fix potential null pointer accessing issue
2. Fix potential memory leak introduced by realloc fail

Change-Id: I1ca0f9089290d43452e9a71428244545f4ed866b
Signed-off-by: Hong-Mei Li <a21834@motorola.com>
Merge "init.rc: remove duplicated led-related nodes"
Merge "libsysutils: fix null pointer and memory leak issue"
Fixed reversed output in netstat Recv-Q Send-Q columns

Change-Id: I2bc7ac6c886808910212432497f05e34596f5e85
Merge "Fixed reversed output in netstat Recv-Q Send-Q columns"
fix bad return value in dhcp_do_request_*

1. bad return status make it return uninitialized prefixLength with a magic
number in android_net_utils_runDhcpCommon()
2. it will make DhcpInfoInternal.makeLinkAddress() to throw
IllegalArgumentException when try to connect a Wifi AP
3. the exception will make system reboot, of cource it random.

Change-Id: Iabc0cd5b69c1316f4eeae0aa1b8a91444dca4562
Signed-off-by: Michael Wu <michaelstay@gmail.com>
init: prevent action being added to the action_queue twice

Property triggers may cause an action to be queued twice, resulting
in a loop in the action queue.  Keep actions that are not on the queue
in the list_empty state (act->qlist->next == act->qlist), and only
add them to the list if they are in that state.

Bug: 8335133
Change-Id: I3a3ec18176cf19cbaa3a45220a03c7560eacfe79
Merge "fix bad return value in dhcp_do_request_*"