Commit Graph

33 Commits

Author SHA1 Message Date
Dianne Hackborn
8d044e8bc2 Start combining threads in system process.
This introduces four generic thread that services can
use in the system process:

- Background: part of the framework for all processes, for
work that is purely background (no timing constraint).
- UI: for time-critical display of UI.
- Foreground: normal foreground work.
- IO: performing IO operations.

I went through and moved services into these threads in the
places I felt relatively comfortable about understanding what
they are doing.  There are still a bunch more we need to look
at -- lots of networking stuff left, 3 or so different native
daemon connectors which I didn't know how much would block,
audio stuff, etc.

Also updated Watchdog to be aware of and check these new
threads, with a new API for other threads to also participate
in this checking.

Change-Id: Ie2f11061cebde5f018d7383b3a910fbbd11d5e11
2013-05-02 17:42:40 -07:00
Jeff Sharkey
7b4596fd68 Require command and argument separation, cleanup.
When invoking NativeDaemonCommands, require that base command and
arguments are separate.  Clean up reverse tethering commands, and
remove deprecated throttle events.

Change-Id: I302a74130b4f7c3f3045815a56d566e89c8969f6
2013-02-25 11:02:50 -08:00
Jeff Sharkey
8b2c3a1460 Useful annotations for code documentation.
Bug: 6537978
Change-Id: I806c3c09e3255f8789455f13bf37c1dde2a93f1f
2012-11-12 12:42:17 -08:00
Robert Greenwalt
ef21599b17 Fix a sync problem in NativeDaemonConnector.
We had a gap in sync coverage between doing a check and waiting and a
matching gap between setting a condition and notifying.  It was possible
to get context switched just so and have the notify hit before the waiter
had started waiting.

bug:6492166
Change-Id: Idc876cf85b35902a79fae932547957ed5ef00e4f
2012-06-07 11:22:54 -07:00
Robert Greenwalt
5a0c320a82 Modify logging to debug this issue
Logging exec time on startUsingNetworkFeature as we've had some reports suggesting it's
causing ANRs.
Remove some logging from NDC so it's local log is more useful.

bug:6492166
Change-Id: I258ff6c59bff2c65935242d50496d84720c5d493
2012-05-24 10:47:10 -07:00
Robert Greenwalt
b5aff3fde3 Add some logging to NDC.
bug:6492166
Change-Id: Ib7c7a0927d3e920f6c041f7252f3f24c8e597bc7
2012-05-15 17:26:57 -07:00
Robert Greenwalt
2d34b4a885 Allow quoted strings from NativeDaemonConnector
Previously we'd only handled quoted strings going into NDC.  This
change auto-handles quoted strings in broadcasts and allows
protocol handlers to request de-quoted elements when needed instead
of using the generic split(" ").

bug: 6353048
Change-Id: I8a07be86411063ed1b402294edc399b4cc076da5
2012-04-20 14:56:32 -07:00
Robert Greenwalt
d192598d3e Record the trimmed cmd string for logs
The over the wire command includes a \0 that mangles log messages.
bug:6149176

Change-Id: I77d4e443f1966bff060f1b97570851f7549fee8e
2012-03-13 12:30:14 -07:00
Robert Greenwalt
470007f69a Make NDC not block forever and handle restart.
Still possible for netd to get wedged but system won't die because of it.
Leads the way to having forking netd - then only individual commands would
wedge, promoting stability.

bug:5864209
bug:6019952
Change-Id: I43e4c5072863b8b812d4fe24d30d92eb1a11651a
2012-02-29 16:53:27 -08:00
Guang Zhu
6ffa76077d Revert "Make NDC not block forever and handle restart."
Reverting because it seems to break `adb reboot`

This reverts commit 813af8d464.

Change-Id: I75d827664a08799de15369c24c84cc3f49a8f297
2012-02-07 19:25:42 -08:00
Robert Greenwalt
813af8d464 Make NDC not block forever and handle restart.
Need changes in core.

Still possible for netd to get wedged but system won't die because of it.
Leads the way to having forking netd - then only individual commands would
wedge, promoting stability.

bug:5864209
Change-Id: Ifcd37511c8239fe3df7e9070869b63a9c5649bd2
2012-02-07 15:59:49 -08:00
Robert Greenwalt
f0be1d89bf Add some logging to NDC.
We're getting some lockups of netd and this can help point us
in the right direction.

bug:5864209
Change-Id: Id8bdb0a758c5b161e0143de61b5f39c3a982e329
2012-02-02 16:38:38 -08:00
Robert Greenwalt
470fd72a06 Log netd traffic nicely.
Create a LocalLog class for logging within a service for dumping in dumps.
Use it in the NativeDaemonConnector so we can get some insight into what
is happening in these lockups.

bug:5864209
Change-Id: I68ddc58847f3c8de613be9528570f8c3157d8274
2012-01-20 10:37:11 -08:00
Jeff Sharkey
ba2896e939 Move native netd calls to varargs.
Uses argument escaping inside NativeDaemonConnector, using varargs
to separate boundaries.  Also introduces Command object to help build
argument lists.

Bug: 5472606
Change-Id: I357979fc19bb0171a056e690064e01b5a7119501
2011-12-02 13:08:26 -08:00
Jeff Sharkey
31c6e4817f Move NativeDaemonConnector to varargs.
Perform uniform argument escaping inside NativeDaemonConnector, using
varargs to separate boundaries.  Also move to parsed NativeDaemonEvent
instances instead of raw Strings.

Bug: 5472606
Change-Id: I1270733e2b2eeb2f6b810240df82ab24d38ebf40
2011-11-29 12:09:06 -08:00
Jeff Sharkey
b0aec07f74 Validate commands and arguments.
Bug: 5465176
Change-Id: I9402054c20ea6cae42781c35bfc2ade90aac31ce
2011-10-17 14:51:42 -07:00
Jeff Sharkey
fa23c5ae22 Add NativeDaemonConnector users to watchdog.
To catch instances where NativeDaemonConnector hangs while executing
commands, add users to system_server watchdog.  Also moved qtaguid
enabler to separate thread to prevent blocking systemReady().

Bug: 5145437
Change-Id: I4c6c1dc09864a1c05f9486a31faa1b366548e911
2011-08-10 13:42:01 -07:00
Chia-chi Yeh
e5750a344a NativeDaemonConnector: offload callbacks to another thread.
Now callbacks can communicate to the same daemon without causing a
deadlock. This also improves the latency of calls because they no
longer need to wait for the callbacks for the pending events.

Change-Id: I153fcf16bd64de79ee1c1a57d3cfdb12b354cf47
2011-08-03 14:42:11 -07:00
Brad Fitzpatrick
b901c9abff am 9204644d: Merge "Fix a race condition in NativeDaemonConnector"
* commit '9204644d9e8fc2a3d05ff386b14b349f7a117694':
  Fix a race condition in NativeDaemonConnector
2011-02-07 10:04:54 -08:00
anga
030bc88b4c Fix a race condition in NativeDaemonConnector
Fixes a race between the onDaemonConnected callback and setting the
mOutputStream in NativeDaemonConnector.

MountService connects to vold using the NativeDaemonConnector.
Throws a “NativeDaemonConnectorException: No output stream!”
when the onDaemonConnected callback in MountService calls the doListCommand.

Change-Id: Ib895bab37f7df680e4362df6366198c0a673c5e9
2011-02-07 09:53:59 -08:00
Irfan Sheriff
1cd94ef957 Do not add unsolicited events to queue
Adding unsolicited events to response queue
results in doCommand() returning the wrong
result.

Pulling this change from master.

Bug: 3258529
Change-Id: I2a4b0bd8bb30b31682d7d61ee94a0d246bf10de2
2011-01-16 14:31:55 -08:00
Robert Greenwalt
e5c3afb292 Cleanup Netd to prevent getting hung.
If the sending of the command fails we should note it and not wait forever
for the response.

We should also not say we're ready until we actually are.

bug:2993205
Change-Id: I380f0312ac4693ad184a526b330fdfa23f6ac558
2010-09-22 16:43:23 -07:00
Kenny Root
12da9d7472 Fix buffer compacting in NativeDaemonConnector
The buffer was being compacted in the read loop, but the start offset on
the compacted buffer wasn't being considered after the next read.

Bug: 2501075
Change-Id: I163297d751cf800d0bbc66df66b1a0fa0785de49
2010-09-02 22:24:06 -07:00
Kenny Root
a80ce06d4c Add more error checking for ndc
In NativeDaemonConnector.doCommand() calls, there was inconsistent error
checking. This change adds error checking for every call and makes it so
that any call to .doCommand() that gets an error code won't cause the
code to hang forever.

Change-Id: I4584953a759a48ad16adfe8ee9e564b5f5796680
2010-06-01 13:29:04 -07:00
Kenny Root
961aa8c887 Compact when NativeDaemonConnector hits buffer limit
If NativeDaemonConnector hits its buffer limit, it would truncate the
data and lose some information. This change compacts the buffer and then
retries to read the rest of the data.

Change-Id: I0d5fee097bdd6808212ef3ad6fb4abbc6310fd4a
2010-03-22 18:02:45 -07:00
Joe Onorato
8a9b22056b Switch the services library to using the new Slog 2010-03-01 13:06:50 -08:00
San Mehat
4086f752e1 NativeDaemonConnector: Improve bad list IPC diagnostics
Signed-off-by: San Mehat <san@google.com>
2010-02-17 09:05:16 -08:00
San Mehat
1ff4371ef2 NativeDaemonConnector: Improve error reporting and debug formatting
Updated:
  NativeDaemonConnector: Put debugging behind a conditional

Signed-off-by: San Mehat <san@google.com>
2010-02-08 19:29:58 -08:00
San Mehat
ec4caa0f54 NativeDaemonConnector: Improve NativeDaemonException reporting to include the actual error response
Signed-off-by: San Mehat <san@google.com>
2010-02-03 14:37:43 -08:00
San Mehat
4c27e0e3be NativeDaemonConnector: Cleanup socket code and use a proper exception
Signed-off-by: San Mehat <san@google.com>
2010-01-29 06:30:23 -08:00
San Mehat
80120b4374 NativeDaemonConnector: fix doListCommand() to return *all* list elements
Signed-off-by: San Mehat <san@google.com>
2010-01-26 13:18:03 -08:00
San Mehat
deba6935c6 NativeDaemonConnector: Add a convenience method for obtaining lists
Signed-off-by: San Mehat <san@google.com>
2010-01-20 15:32:02 -08:00
San Mehat
67bd2cd75f services: Introduce NativeDaemonConnector class
This class provides an interface to communicate with native daemons using the
libsysutils framework communication code.

Signed-off-by: San Mehat <san@google.com>

NativeDaemonConnector: fix whitespace

Signed-off-by: San Mehat <san@google.com>

NativeDaemonConnector: Fix review comments

Signed-off-by: San Mehat <san@google.com>

NativeDaemonConnector: On an error, re-try the connection

Signed-off-by: San Mehat <san@google.com>
2010-01-12 13:55:39 -08:00