diff options
-rw-r--r-- | charger/charger.c | 11 | ||||
-rw-r--r-- | libnl_2/handlers.c | 10 | ||||
-rw-r--r-- | libnl_2/netlink.c | 16 | ||||
-rw-r--r-- | libnl_2/socket.c | 35 | ||||
-rw-r--r-- | libsysutils/src/NetlinkEvent.cpp | 1 | ||||
-rw-r--r-- | rootdir/init.rc | 6 |
6 files changed, 47 insertions, 32 deletions
diff --git a/charger/charger.c b/charger/charger.c index 03280bfe8..abf551710 100644 --- a/charger/charger.c +++ b/charger/charger.c | |||
@@ -87,6 +87,7 @@ struct frame { | |||
87 | const char *name; | 87 | const char *name; |
88 | int disp_time; | 88 | int disp_time; |
89 | int min_capacity; | 89 | int min_capacity; |
90 | bool level_only; | ||
90 | 91 | ||
91 | gr_surface surface; | 92 | gr_surface surface; |
92 | }; | 93 | }; |
@@ -157,6 +158,7 @@ static struct frame batt_anim_frames[] = { | |||
157 | .name = "charger/battery_4", | 158 | .name = "charger/battery_4", |
158 | .disp_time = 750, | 159 | .disp_time = 750, |
159 | .min_capacity = 80, | 160 | .min_capacity = 80, |
161 | .level_only = true, | ||
160 | }, | 162 | }, |
161 | { | 163 | { |
162 | .name = "charger/battery_5", | 164 | .name = "charger/battery_5", |
@@ -735,7 +737,14 @@ static void update_screen_state(struct charger *charger, int64_t now) | |||
735 | * if necessary, advance cycle cntr, and reset frame cntr | 737 | * if necessary, advance cycle cntr, and reset frame cntr |
736 | */ | 738 | */ |
737 | batt_anim->cur_frame++; | 739 | batt_anim->cur_frame++; |
738 | if (batt_anim->cur_frame == batt_anim->num_frames) { | 740 | |
741 | /* if the frame is used for level-only, that is only show it when it's | ||
742 | * the current level, skip it during the animation. | ||
743 | */ | ||
744 | while (batt_anim->cur_frame < batt_anim->num_frames && | ||
745 | batt_anim->frames[batt_anim->cur_frame].level_only) | ||
746 | batt_anim->cur_frame++; | ||
747 | if (batt_anim->cur_frame >= batt_anim->num_frames) { | ||
739 | batt_anim->cur_cycle++; | 748 | batt_anim->cur_cycle++; |
740 | batt_anim->cur_frame = 0; | 749 | batt_anim->cur_frame = 0; |
741 | 750 | ||
diff --git a/libnl_2/handlers.c b/libnl_2/handlers.c index ec8d51270..48dcab4a8 100644 --- a/libnl_2/handlers.c +++ b/libnl_2/handlers.c | |||
@@ -39,16 +39,14 @@ fail: | |||
39 | struct nl_cb *nl_cb_clone(struct nl_cb *orig) | 39 | struct nl_cb *nl_cb_clone(struct nl_cb *orig) |
40 | { | 40 | { |
41 | struct nl_cb *new_cb; | 41 | struct nl_cb *new_cb; |
42 | int new_refcnt; | ||
43 | 42 | ||
44 | new_cb = nl_cb_alloc(NL_CB_DEFAULT); | 43 | new_cb = nl_cb_alloc(NL_CB_DEFAULT); |
45 | if (new_cb == NULL) | 44 | if (new_cb == NULL) |
46 | goto fail; | 45 | goto fail; |
47 | 46 | ||
48 | /* Preserve reference count and copy original */ | 47 | /* Copy original and set refcount to 1 */ |
49 | new_refcnt = new_cb->cb_refcnt; | ||
50 | memcpy(new_cb, orig, sizeof(*orig)); | 48 | memcpy(new_cb, orig, sizeof(*orig)); |
51 | new_cb->cb_refcnt = new_refcnt; | 49 | new_cb->cb_refcnt = 1; |
52 | 50 | ||
53 | return new_cb; | 51 | return new_cb; |
54 | fail: | 52 | fail: |
@@ -84,9 +82,9 @@ struct nl_cb *nl_cb_get(struct nl_cb *cb) | |||
84 | 82 | ||
85 | void nl_cb_put(struct nl_cb *cb) | 83 | void nl_cb_put(struct nl_cb *cb) |
86 | { | 84 | { |
85 | if (!cb) | ||
86 | return; | ||
87 | cb->cb_refcnt--; | 87 | cb->cb_refcnt--; |
88 | if (cb->cb_refcnt <= 0) | 88 | if (cb->cb_refcnt <= 0) |
89 | free(cb); | 89 | free(cb); |
90 | |||
91 | } | 90 | } |
92 | |||
diff --git a/libnl_2/netlink.c b/libnl_2/netlink.c index cc2f88e68..ee3d600f7 100644 --- a/libnl_2/netlink.c +++ b/libnl_2/netlink.c | |||
@@ -59,15 +59,14 @@ int nl_recv(struct nl_sock *sk, struct sockaddr_nl *nla, \ | |||
59 | { | 59 | { |
60 | int rc = -1; | 60 | int rc = -1; |
61 | int sk_flags; | 61 | int sk_flags; |
62 | int RECV_BUF_SIZE; | 62 | int RECV_BUF_SIZE = getpagesize(); |
63 | int errsv; | 63 | int errsv; |
64 | struct iovec recvmsg_iov; | 64 | struct iovec recvmsg_iov; |
65 | struct msghdr msg; | 65 | struct msghdr msg; |
66 | 66 | ||
67 | /* Allocate buffer */ | 67 | /* Allocate buffer */ |
68 | RECV_BUF_SIZE = getpagesize(); | ||
69 | *buf = (unsigned char *) malloc(RECV_BUF_SIZE); | 68 | *buf = (unsigned char *) malloc(RECV_BUF_SIZE); |
70 | if (!buf) { | 69 | if (!(*buf)) { |
71 | rc = -ENOMEM; | 70 | rc = -ENOMEM; |
72 | goto fail; | 71 | goto fail; |
73 | } | 72 | } |
@@ -91,8 +90,11 @@ int nl_recv(struct nl_sock *sk, struct sockaddr_nl *nla, \ | |||
91 | errsv = errno; | 90 | errsv = errno; |
92 | fcntl(sk->s_fd, F_SETFL, sk_flags); | 91 | fcntl(sk->s_fd, F_SETFL, sk_flags); |
93 | 92 | ||
94 | if (rc < 0) | 93 | if (rc < 0) { |
95 | rc = -errsv; | 94 | rc = -errsv; |
95 | free(*buf); | ||
96 | *buf = NULL; | ||
97 | } | ||
96 | 98 | ||
97 | fail: | 99 | fail: |
98 | return rc; | 100 | return rc; |
@@ -108,7 +110,6 @@ int nl_recvmsgs(struct nl_sock *sk, struct nl_cb *cb) | |||
108 | int rc, cb_rc = NL_OK, done = 0; | 110 | int rc, cb_rc = NL_OK, done = 0; |
109 | 111 | ||
110 | do { | 112 | do { |
111 | |||
112 | unsigned char *buf; | 113 | unsigned char *buf; |
113 | int i, rem, flags; | 114 | int i, rem, flags; |
114 | struct nlmsghdr *nlh; | 115 | struct nlmsghdr *nlh; |
@@ -127,7 +128,7 @@ int nl_recvmsgs(struct nl_sock *sk, struct nl_cb *cb) | |||
127 | 128 | ||
128 | /* Check for callbacks */ | 129 | /* Check for callbacks */ |
129 | 130 | ||
130 | msg = (struct nl_msg *)malloc(sizeof(struct nl_msg)); | 131 | msg = (struct nl_msg *) malloc(sizeof(struct nl_msg)); |
131 | memset(msg, 0, sizeof(*msg)); | 132 | memset(msg, 0, sizeof(*msg)); |
132 | msg->nm_nlh = nlh; | 133 | msg->nm_nlh = nlh; |
133 | 134 | ||
@@ -187,7 +188,6 @@ int nl_recvmsgs(struct nl_sock *sk, struct nl_cb *cb) | |||
187 | if (done) | 188 | if (done) |
188 | break; | 189 | break; |
189 | } | 190 | } |
190 | |||
191 | free(buf); | 191 | free(buf); |
192 | buf = NULL; | 192 | buf = NULL; |
193 | 193 | ||
@@ -197,7 +197,7 @@ int nl_recvmsgs(struct nl_sock *sk, struct nl_cb *cb) | |||
197 | 197 | ||
198 | success: | 198 | success: |
199 | fail: | 199 | fail: |
200 | return rc; | 200 | return rc; |
201 | } | 201 | } |
202 | 202 | ||
203 | /* Send raw data over netlink socket */ | 203 | /* Send raw data over netlink socket */ |
diff --git a/libnl_2/socket.c b/libnl_2/socket.c index ce54f19ba..d906cac27 100644 --- a/libnl_2/socket.c +++ b/libnl_2/socket.c | |||
@@ -31,7 +31,7 @@ int nl_socket_add_membership(struct nl_sock *sk, int group) | |||
31 | } | 31 | } |
32 | 32 | ||
33 | /* Allocate new netlink socket. */ | 33 | /* Allocate new netlink socket. */ |
34 | struct nl_sock *nl_socket_alloc(void) | 34 | static struct nl_sock *_nl_socket_alloc(void) |
35 | { | 35 | { |
36 | struct nl_sock *sk; | 36 | struct nl_sock *sk; |
37 | struct timeval tv; | 37 | struct timeval tv; |
@@ -39,13 +39,13 @@ struct nl_sock *nl_socket_alloc(void) | |||
39 | 39 | ||
40 | sk = (struct nl_sock *) malloc(sizeof(struct nl_sock)); | 40 | sk = (struct nl_sock *) malloc(sizeof(struct nl_sock)); |
41 | if (!sk) | 41 | if (!sk) |
42 | goto fail; | 42 | return NULL; |
43 | memset(sk, 0, sizeof(*sk)); | 43 | memset(sk, 0, sizeof(*sk)); |
44 | 44 | ||
45 | /* Get current time */ | 45 | /* Get current time */ |
46 | 46 | ||
47 | if (gettimeofday(&tv, NULL)) | 47 | if (gettimeofday(&tv, NULL)) |
48 | return NULL; | 48 | goto fail; |
49 | else | 49 | else |
50 | sk->s_seq_next = (int) tv.tv_sec; | 50 | sk->s_seq_next = (int) tv.tv_sec; |
51 | 51 | ||
@@ -59,24 +59,36 @@ struct nl_sock *nl_socket_alloc(void) | |||
59 | sk->s_peer.nl_pid = 0; /* Kernel */ | 59 | sk->s_peer.nl_pid = 0; /* Kernel */ |
60 | sk->s_peer.nl_groups = 0; /* No groups */ | 60 | sk->s_peer.nl_groups = 0; /* No groups */ |
61 | 61 | ||
62 | cb = (struct nl_cb *) malloc(sizeof(struct nl_cb)); | 62 | return sk; |
63 | if (!cb) | 63 | fail: |
64 | goto cb_fail; | 64 | free(sk); |
65 | memset(cb, 0, sizeof(*cb)); | 65 | return NULL; |
66 | sk->s_cb = nl_cb_alloc(NL_CB_DEFAULT); | 66 | } |
67 | 67 | ||
68 | /* Allocate new netlink socket. */ | ||
69 | struct nl_sock *nl_socket_alloc(void) | ||
70 | { | ||
71 | struct nl_sock *sk = _nl_socket_alloc(); | ||
72 | struct nl_cb *cb; | ||
68 | 73 | ||
74 | if (!sk) | ||
75 | return NULL; | ||
76 | |||
77 | cb = nl_cb_alloc(NL_CB_DEFAULT); | ||
78 | if (!cb) | ||
79 | goto cb_fail; | ||
80 | sk->s_cb = cb; | ||
69 | return sk; | 81 | return sk; |
70 | cb_fail: | 82 | cb_fail: |
71 | free(sk); | 83 | free(sk); |
72 | fail: | ||
73 | return NULL; | 84 | return NULL; |
74 | } | 85 | } |
75 | 86 | ||
76 | /* Allocate new socket with custom callbacks. */ | 87 | /* Allocate new socket with custom callbacks. */ |
77 | struct nl_sock *nl_socket_alloc_cb(struct nl_cb *cb) | 88 | struct nl_sock *nl_socket_alloc_cb(struct nl_cb *cb) |
78 | { | 89 | { |
79 | struct nl_sock *sk = nl_socket_alloc(); | 90 | struct nl_sock *sk = _nl_socket_alloc(); |
91 | |||
80 | if (!sk) | 92 | if (!sk) |
81 | return NULL; | 93 | return NULL; |
82 | 94 | ||
@@ -84,7 +96,6 @@ struct nl_sock *nl_socket_alloc_cb(struct nl_cb *cb) | |||
84 | nl_cb_get(cb); | 96 | nl_cb_get(cb); |
85 | 97 | ||
86 | return sk; | 98 | return sk; |
87 | |||
88 | } | 99 | } |
89 | 100 | ||
90 | /* Free a netlink socket. */ | 101 | /* Free a netlink socket. */ |
@@ -116,5 +127,3 @@ int nl_socket_get_fd(struct nl_sock *sk) | |||
116 | { | 127 | { |
117 | return sk->s_fd; | 128 | return sk->s_fd; |
118 | } | 129 | } |
119 | |||
120 | |||
diff --git a/libsysutils/src/NetlinkEvent.cpp b/libsysutils/src/NetlinkEvent.cpp index fe969768d..4beebb73d 100644 --- a/libsysutils/src/NetlinkEvent.cpp +++ b/libsysutils/src/NetlinkEvent.cpp | |||
@@ -122,7 +122,6 @@ bool NetlinkEvent::parseBinaryNetlinkMessage(char *buffer, int size) { | |||
122 | } | 122 | } |
123 | pm = (ulog_packet_msg_t *)NLMSG_DATA(nh); | 123 | pm = (ulog_packet_msg_t *)NLMSG_DATA(nh); |
124 | devname = pm->indev_name[0] ? pm->indev_name : pm->outdev_name; | 124 | devname = pm->indev_name[0] ? pm->indev_name : pm->outdev_name; |
125 | SLOGD("QLOG prefix=%s dev=%s\n", pm->prefix, devname); | ||
126 | asprintf(&mParams[0], "ALERT_NAME=%s", pm->prefix); | 125 | asprintf(&mParams[0], "ALERT_NAME=%s", pm->prefix); |
127 | asprintf(&mParams[1], "INTERFACE=%s", devname); | 126 | asprintf(&mParams[1], "INTERFACE=%s", devname); |
128 | mSubsystem = strdup("qlog"); | 127 | mSubsystem = strdup("qlog"); |
diff --git a/rootdir/init.rc b/rootdir/init.rc index 46af96c46..3f7cbc3c4 100644 --- a/rootdir/init.rc +++ b/rootdir/init.rc | |||
@@ -1,4 +1,7 @@ | |||
1 | on early-init | 1 | on early-init |
2 | # Set init and its forked children's oom_adj. | ||
3 | write /proc/1/oom_adj -16 | ||
4 | |||
2 | start ueventd | 5 | start ueventd |
3 | 6 | ||
4 | # create mountpoints | 7 | # create mountpoints |
@@ -204,9 +207,6 @@ on boot | |||
204 | chown root system /sys/module/lowmemorykiller/parameters/minfree | 207 | chown root system /sys/module/lowmemorykiller/parameters/minfree |
205 | chmod 0664 /sys/module/lowmemorykiller/parameters/minfree | 208 | chmod 0664 /sys/module/lowmemorykiller/parameters/minfree |
206 | 209 | ||
207 | # Set init and its forked children's oom_adj. | ||
208 | write /proc/1/oom_adj -16 | ||
209 | |||
210 | # Tweak background writeout | 210 | # Tweak background writeout |
211 | write /proc/sys/vm/dirty_expire_centisecs 200 | 211 | write /proc/sys/vm/dirty_expire_centisecs 200 |
212 | write /proc/sys/vm/dirty_background_ratio 5 | 212 | write /proc/sys/vm/dirty_background_ratio 5 |