Merge "init.rc: Add support for new USB accessory configurations"
diff --git a/include/private/android_filesystem_config.h b/include/private/android_filesystem_config.h
index 8e9edd9..16bedb5 100644
--- a/include/private/android_filesystem_config.h
+++ b/include/private/android_filesystem_config.h
@@ -53,7 +53,7 @@
#define AID_KEYSTORE 1017 /* keystore subsystem */
#define AID_USB 1018 /* USB devices */
#define AID_DRM 1019 /* DRM server */
-#define AID_AVAILABLE 1020 /* available for use */
+#define AID_MDNSR 1020 /* MulticastDNSResponder (service discovery) */
#define AID_GPS 1021 /* GPS daemon */
#define AID_UNUSED1 1022 /* deprecated, DO NOT USE */
#define AID_MEDIA_RW 1023 /* internal media storage write access */
@@ -111,7 +111,7 @@
{ "install", AID_INSTALL, },
{ "media", AID_MEDIA, },
{ "drm", AID_DRM, },
- { "available", AID_AVAILABLE, },
+ { "mdnsr", AID_MDNSR, },
{ "nfc", AID_NFC, },
{ "drmrpc", AID_DRMRPC, },
{ "shell", AID_SHELL, },
diff --git a/include/system/window.h b/include/system/window.h
index 9602445..8daa44b 100644
--- a/include/system/window.h
+++ b/include/system/window.h
@@ -157,9 +157,10 @@
/*
- * Default width and height of the ANativeWindow, these are the dimensions
- * of the window irrespective of the NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS
- * call.
+ * Default width and height of ANativeWindow buffers, these are the
+ * dimensions of the window buffers irrespective of the
+ * NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS call and match the native window
+ * size unless overriden by NATIVE_WINDOW_SET_BUFFERS_USER_DIMENSIONS.
*/
NATIVE_WINDOW_DEFAULT_WIDTH = 6,
NATIVE_WINDOW_DEFAULT_HEIGHT = 7,
@@ -231,6 +232,7 @@
NATIVE_WINDOW_UNLOCK_AND_POST = 12, /* private */
NATIVE_WINDOW_API_CONNECT = 13, /* private */
NATIVE_WINDOW_API_DISCONNECT = 14, /* private */
+ NATIVE_WINDOW_SET_BUFFERS_USER_DIMENSIONS = 15, /* private */
};
/* parameter for NATIVE_WINDOW_[API_][DIS]CONNECT */
@@ -276,6 +278,10 @@
NATIVE_WINDOW_SCALING_MODE_FREEZE = 0,
/* the buffer is scaled in both dimensions to match the window size */
NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW = 1,
+ /* the buffer is scaled uniformly such that the smaller dimension
+ * of the buffer matches the window size (cropping in the process)
+ */
+ NATIVE_WINDOW_SCALING_MODE_SCALE_CROP = 2,
};
/* values returned by the NATIVE_WINDOW_CONCRETE_TYPE query */
@@ -417,6 +423,7 @@
* NATIVE_WINDOW_UNLOCK_AND_POST (private)
* NATIVE_WINDOW_API_CONNECT (private)
* NATIVE_WINDOW_API_DISCONNECT (private)
+ * NATIVE_WINDOW_SET_BUFFERS_USER_DIMENSIONS (private)
*
*/
@@ -527,7 +534,7 @@
/*
* native_window_set_buffers_dimensions(..., int w, int h)
* All buffers dequeued after this call will have the dimensions specified.
- * In particular, all buffers will have a fixed-size, independent form the
+ * In particular, all buffers will have a fixed-size, independent from the
* native-window size. They will be scaled according to the scaling mode
* (see native_window_set_scaling_mode) upon window composition.
*
@@ -546,6 +553,31 @@
}
/*
+ * native_window_set_buffers_user_dimensions(..., int w, int h)
+ *
+ * Sets the user buffer size for the window, which overrides the
+ * window's size. All buffers dequeued after this call will have the
+ * dimensions specified unless overridden by
+ * native_window_set_buffers_dimensions. All buffers will have a
+ * fixed-size, independent from the native-window size. They will be
+ * scaled according to the scaling mode (see
+ * native_window_set_scaling_mode) upon window composition.
+ *
+ * If w and h are 0, the normal behavior is restored. That is, the
+ * default buffer size will match the windows's size.
+ *
+ * Calling this function will reset the window crop to a NULL value, which
+ * disables cropping of the buffers.
+ */
+static inline int native_window_set_buffers_user_dimensions(
+ struct ANativeWindow* window,
+ int w, int h)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_USER_DIMENSIONS,
+ w, h);
+}
+
+/*
* native_window_set_buffers_format(..., int format)
* All buffers dequeued after this call will have the format specified.
*
diff --git a/include/sysutils/NetlinkEvent.h b/include/sysutils/NetlinkEvent.h
index 25a56f7..3494a9c 100644
--- a/include/sysutils/NetlinkEvent.h
+++ b/include/sysutils/NetlinkEvent.h
@@ -34,6 +34,8 @@
const static int NlActionChange;
const static int NlActionLinkDown;
const static int NlActionLinkUp;
+ const static int NlActionIfaceActive;
+ const static int NlActionIfaceIdle;
NetlinkEvent();
virtual ~NetlinkEvent();
diff --git a/init/init.c b/init/init.c
index 483544a..4f57144 100755
--- a/init/init.c
+++ b/init/init.c
@@ -648,7 +648,6 @@
{ "ro.boot.serialno", "ro.serialno", "", },
{ "ro.boot.mode", "ro.bootmode", "unknown", },
{ "ro.boot.baseband", "ro.baseband", "unknown", },
- { "ro.boot.carrier", "ro.carrier", "unknown", },
{ "ro.boot.bootloader", "ro.bootloader", "unknown", },
};
diff --git a/libsysutils/src/NetlinkEvent.cpp b/libsysutils/src/NetlinkEvent.cpp
index 4beebb7..6439711 100644
--- a/libsysutils/src/NetlinkEvent.cpp
+++ b/libsysutils/src/NetlinkEvent.cpp
@@ -25,6 +25,7 @@
#include <sys/socket.h>
#include <linux/if.h>
#include <linux/netfilter/nfnetlink.h>
+#include <linux/netfilter/xt_IDLETIMER.h>
#include <linux/netfilter_ipv4/ipt_ULOG.h>
/* From kernel's net/netfilter/xt_quota2.c */
const int QLOG_NL_EVENT = 112;
@@ -38,6 +39,8 @@
const int NetlinkEvent::NlActionChange = 3;
const int NetlinkEvent::NlActionLinkUp = 4;
const int NetlinkEvent::NlActionLinkDown = 5;
+const int NetlinkEvent::NlActionIfaceActive = 6;
+const int NetlinkEvent::NlActionIfaceIdle = 7;
NetlinkEvent::NetlinkEvent() {
mAction = NlActionUnknown;
@@ -70,7 +73,8 @@
}
/*
- * Parse an binary message from a NETLINK_ROUTE netlink socket.
+ * Parse an binary message from a NETLINK_ROUTE netlink socket
+ * and IDLETIMER netlink socket.
*/
bool NetlinkEvent::parseBinaryNetlinkMessage(char *buffer, int size) {
size_t sz = size;
@@ -127,6 +131,14 @@
mSubsystem = strdup("qlog");
mAction = NlActionChange;
+ } else if (nh->nlmsg_type == NL_EVENT_TYPE_ACTIVE
+ || nh->nlmsg_type == NL_EVENT_TYPE_INACTIVE) {
+ char *ifacename;
+ ifacename = (char *)NLMSG_DATA(nh);
+ asprintf(&mParams[0], "INTERFACE=%s", ifacename);
+ mSubsystem = strdup("idletimer");
+ mAction = (nh->nlmsg_type == NL_EVENT_TYPE_ACTIVE) ?
+ NlActionIfaceActive : NlActionIfaceIdle;
} else {
SLOGD("Unexpected netlink message. type=0x%x\n", nh->nlmsg_type);
}
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 17b4226..8f93b49 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -238,6 +238,20 @@
chmod 0660 /sys/power/state
chmod 0660 /sys/power/wake_lock
chmod 0660 /sys/power/wake_unlock
+
+ chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_rate
+ chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_rate
+ chown system system /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
+ chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
+ chown system system /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
+ chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
+ chown system system /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
+ chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
+
+ # Assume SMP uses shared cpufreq policy for all CPUs
+ chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
+ chmod 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
+
chown system system /sys/class/timed_output/vibrator/enable
chown system system /sys/class/leds/keyboard-backlight/brightness
chown system system /sys/class/leds/lcd-backlight/brightness
@@ -323,6 +337,10 @@
on property:ro.debuggable=1
start console
+# Allow writing to the kernel trace log. Enabling tracing still requires root.
+on property:ro.debuggable=1
+ chmod 0222 /sys/kernel/debug/tracing/trace_marker
+
# adbd is controlled via property triggers in init.<platform>.usb.rc
service adbd /sbin/adbd
class core
@@ -351,6 +369,7 @@
class main
socket netd stream 0660 root system
socket dnsproxyd stream 0660 root inet
+ socket mdns stream 0660 root system
service debuggerd /system/bin/debuggerd
class main
@@ -448,3 +467,12 @@
service sshd /system/bin/start-ssh
class main
disabled
+
+service mdnsd /system/bin/mdnsd
+ class main
+ user mdnsr
+ group inet net_raw
+ socket mdnsd stream 0660 mdnsr inet
+ disabled
+ oneshot
+
diff --git a/sdcard/sdcard.c b/sdcard/sdcard.c
index 689cd2a..dba5a4e 100644
--- a/sdcard/sdcard.c
+++ b/sdcard/sdcard.c
@@ -43,7 +43,7 @@
* usage: sdcard <path> <uid> <gid>
*
* It must be run as root, but will change to uid/gid as soon as it
- * mounts a filesystem on /mnt/sdcard. It will refuse to run if uid or
+ * mounts a filesystem on /storage/sdcard. It will refuse to run if uid or
* gid are zero.
*
*
@@ -70,7 +70,7 @@
#define FUSE_UNKNOWN_INO 0xffffffff
-#define MOUNT_POINT "/mnt/sdcard"
+#define MOUNT_POINT "/storage/sdcard0"
struct handle {
struct node *node;