summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--charger/charger.c11
-rw-r--r--libnl_2/handlers.c10
-rw-r--r--libnl_2/netlink.c16
-rw-r--r--libnl_2/socket.c35
-rw-r--r--libsysutils/src/NetlinkEvent.cpp1
-rw-r--r--rootdir/init.rc6
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:
39struct nl_cb *nl_cb_clone(struct nl_cb *orig) 39struct 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;
54fail: 52fail:
@@ -84,9 +82,9 @@ struct nl_cb *nl_cb_get(struct nl_cb *cb)
84 82
85void nl_cb_put(struct nl_cb *cb) 83void 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
97fail: 99fail:
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
198success: 198success:
199fail: 199fail:
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. */
34struct nl_sock *nl_socket_alloc(void) 34static 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) 63fail:
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. */
69struct 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;
70cb_fail: 82cb_fail:
71 free(sk); 83 free(sk);
72fail:
73 return NULL; 84 return NULL;
74} 85}
75 86
76/* Allocate new socket with custom callbacks. */ 87/* Allocate new socket with custom callbacks. */
77struct nl_sock *nl_socket_alloc_cb(struct nl_cb *cb) 88struct 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 @@
1on early-init 1on 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