Loading rootdir/init.rc +18 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,24 @@ loglevel 3 write /proc/sys/kernel/sched_latency_ns 10000000 write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000 # Create cgroup mount points for process groups mkdir /dev/cpuctl mount cgroup none /dev/cpuctl cpu chown sytem system /dev/cpuctl chown system system /dev/cpuctl/tasks chmod 0777 /dev/cpuctl/tasks write /dev/cpuctl/cpu.shares 1024 mkdir /dev/cpuctl/fg_boost chown system system /dev/cpuctl/fg_boost/tasks chmod 0777 /dev/cpuctl/fg_boost/tasks write /dev/cpuctl/fg_boost/cpu.shares 1024 mkdir /dev/cpuctl/bg_non_interactive chown system system /dev/cpuctl/bg_non_interactive/tasks chmod 0777 /dev/cpuctl/bg_non_interactive/tasks write /dev/cpuctl/bg_non_interactive/cpu.shares 1024 # mount mtd partitions # Mount /system rw first to give the filesystem a chance to save a checkpoint mount yaffs2 mtd@system /system Loading toolbox/getevent.c +47 −4 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ static int print_possible_events(int fd) { uint8_t *bits = NULL; ssize_t bits_size = 0; const char* label; int i, j, k; int res, res2; Loading @@ -45,21 +46,48 @@ static int print_possible_events(int fd) return 1; } } res2 = 0; switch(i) { case EV_SYN: label = "SYN"; break; case EV_KEY: res2 = ioctl(fd, EVIOCGKEY(res), bits + bits_size); label = "KEY"; break; case EV_REL: label = "REL"; break; case EV_ABS: label = "ABS"; break; case EV_MSC: label = "MSC"; break; case EV_LED: res2 = ioctl(fd, EVIOCGLED(res), bits + bits_size); label = "LED"; break; case EV_SND: res2 = ioctl(fd, EVIOCGSND(res), bits + bits_size); label = "SND"; break; case EV_SW: res2 = ioctl(fd, EVIOCGSW(bits_size), bits + bits_size); label = "SW "; break; case EV_REP: label = "REP"; break; case EV_FF: label = "FF "; break; case EV_PWR: label = "PWR"; break; default: res2 = 0; label = "???"; } for(j = 0; j < res; j++) { for(k = 0; k < 8; k++) Loading @@ -70,7 +98,7 @@ static int print_possible_events(int fd) else down = ' '; if(count == 0) printf(" type %04x:", i); printf(" %s (%04x):", label, i); else if((count & 0x7) == 0 || i == EV_ABS) printf("\n "); printf(" %04x%c", j * 8 + k, down); Loading Loading @@ -264,7 +292,16 @@ static int scan_dir(const char *dirname, int print_flags) static void usage(int argc, char *argv[]) { fprintf(stderr, "Usage: %s [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-q] [-c count] [-r] [device]\n", argv[0]); fprintf(stderr, "Usage: %s [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-p] [-q] [-c count] [-r] [device]\n", argv[0]); fprintf(stderr, " -t: show time stamps\n"); fprintf(stderr, " -n: don't print newlines\n"); fprintf(stderr, " -s: print switch states for given bits\n"); fprintf(stderr, " -S: print all switch states\n"); fprintf(stderr, " -v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32)\n"); fprintf(stderr, " -p: show possible events (errs, dev, name, pos. events)\n"); fprintf(stderr, " -q: quiet (clear verbosity mask)\n"); fprintf(stderr, " -c: print given number of events then exit\n"); fprintf(stderr, " -r: print rate events are received\n"); } int getevent_main(int argc, char *argv[]) Loading @@ -290,7 +327,7 @@ int getevent_main(int argc, char *argv[]) opterr = 0; do { c = getopt(argc, argv, "tns:Sv::qc:rh"); c = getopt(argc, argv, "tns:Sv::pqc:rh"); if (c == EOF) break; switch (c) { Loading @@ -317,6 +354,12 @@ int getevent_main(int argc, char *argv[]) print_flags |= PRINT_DEVICE | PRINT_DEVICE_NAME | PRINT_DEVICE_INFO | PRINT_VERSION; print_flags_set = 1; break; case 'p': print_flags = PRINT_DEVICE_ERRORS | PRINT_DEVICE | PRINT_DEVICE_NAME | PRINT_POSSIBLE_EVENTS; print_flags_set = 1; if(dont_block == -1) dont_block = 1; break; case 'q': print_flags = 0; print_flags_set = 1; Loading toolbox/route.c +37 −8 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <stdarg.h> #include <errno.h> #include <string.h> Loading @@ -14,9 +15,14 @@ #include <arpa/inet.h> #include <linux/route.h> static void die(const char *s) static void die(const char *fmt, ...) { fprintf(stderr,"error: %s (%s)\n", s, strerror(errno)); va_list p; va_start(p, fmt); fprintf(stderr,"error(%s): ", strerror(errno)); fprintf(stderr, fmt, p); va_end(p); exit(-1); } Loading @@ -36,9 +42,10 @@ static inline void init_sockaddr_in(struct sockaddr_in *sin, const char *addr) } \ } while(0) /* current support two kinds of usage */ /* current support the following routing entries */ /* route add default dev wlan0 */ /* route add default gw 192.168.20.1 dev wlan0 */ /* route add net 192.168.1.1 netmask 255.255.255.0 gw 172.24.192.10 */ int route_main(int argc, char *argv[]) { Loading Loading @@ -68,7 +75,7 @@ int route_main(int argc, char *argv[]) EXPECT_NEXT(argc, argv); rt.rt_flags = RTF_UP | RTF_HOST; rt.rt_dev = argv[0]; if (ioctl(s, SIOCADDRT, &rt) < 0) die("SIOCADDRT"); if (ioctl(s, SIOCADDRT, &rt) < 0) die("SIOCADDRT\n"); }else if(!strcmp(argv[0], "gw")) { EXPECT_NEXT(argc, argv); rt.rt_flags = RTF_UP | RTF_GATEWAY; Loading @@ -76,16 +83,39 @@ int route_main(int argc, char *argv[]) if(isdigit(argv[0][0])){ init_sockaddr_in((struct sockaddr_in *)&(rt.rt_gateway), argv[0]); }else{ die("expecting an IP address for parameter \"gw\""); die("expecting an IP address for parameter \"gw\"\n"); } EXPECT_NEXT(argc, argv); if(!strcmp(argv[0], "dev")) { EXPECT_NEXT(argc, argv); rt.rt_dev = argv[0]; if (ioctl(s, SIOCADDRT, &rt) < 0){ die("SIOCADDRT"); die("SIOCADDRT\n"); } } } } else { char keywords[3][5] = { "net", "mask", "gw" }; struct sockaddr_in *paddr[3] = { &rt.rt_dst, &rt.rt_genmask, &rt.rt_gateway }; int k = 0; memset((char *) &rt, 0, sizeof(struct rtentry)); rt.rt_flags = RTF_UP | RTF_GATEWAY; do { if(!strcmp(argv[0], keywords[k])) { EXPECT_NEXT(argc, argv); if(isdigit(argv[0][0])) { init_sockaddr_in(paddr[k], argv[0]); } else { die("expecting an IP/MASK address for parameter %s\n", keywords[k]); } if(k < 2) EXPECT_NEXT(argc, argv); } else { die("expecting keyword(s)\n"); } } while(++k < 3); if(ioctl(s, SIOCADDRT, &rt) < 0) { die("SIOCADDRT\n"); } } } Loading @@ -94,4 +124,3 @@ int route_main(int argc, char *argv[]) return 0; } Loading
rootdir/init.rc +18 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,24 @@ loglevel 3 write /proc/sys/kernel/sched_latency_ns 10000000 write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000 # Create cgroup mount points for process groups mkdir /dev/cpuctl mount cgroup none /dev/cpuctl cpu chown sytem system /dev/cpuctl chown system system /dev/cpuctl/tasks chmod 0777 /dev/cpuctl/tasks write /dev/cpuctl/cpu.shares 1024 mkdir /dev/cpuctl/fg_boost chown system system /dev/cpuctl/fg_boost/tasks chmod 0777 /dev/cpuctl/fg_boost/tasks write /dev/cpuctl/fg_boost/cpu.shares 1024 mkdir /dev/cpuctl/bg_non_interactive chown system system /dev/cpuctl/bg_non_interactive/tasks chmod 0777 /dev/cpuctl/bg_non_interactive/tasks write /dev/cpuctl/bg_non_interactive/cpu.shares 1024 # mount mtd partitions # Mount /system rw first to give the filesystem a chance to save a checkpoint mount yaffs2 mtd@system /system Loading
toolbox/getevent.c +47 −4 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ static int print_possible_events(int fd) { uint8_t *bits = NULL; ssize_t bits_size = 0; const char* label; int i, j, k; int res, res2; Loading @@ -45,21 +46,48 @@ static int print_possible_events(int fd) return 1; } } res2 = 0; switch(i) { case EV_SYN: label = "SYN"; break; case EV_KEY: res2 = ioctl(fd, EVIOCGKEY(res), bits + bits_size); label = "KEY"; break; case EV_REL: label = "REL"; break; case EV_ABS: label = "ABS"; break; case EV_MSC: label = "MSC"; break; case EV_LED: res2 = ioctl(fd, EVIOCGLED(res), bits + bits_size); label = "LED"; break; case EV_SND: res2 = ioctl(fd, EVIOCGSND(res), bits + bits_size); label = "SND"; break; case EV_SW: res2 = ioctl(fd, EVIOCGSW(bits_size), bits + bits_size); label = "SW "; break; case EV_REP: label = "REP"; break; case EV_FF: label = "FF "; break; case EV_PWR: label = "PWR"; break; default: res2 = 0; label = "???"; } for(j = 0; j < res; j++) { for(k = 0; k < 8; k++) Loading @@ -70,7 +98,7 @@ static int print_possible_events(int fd) else down = ' '; if(count == 0) printf(" type %04x:", i); printf(" %s (%04x):", label, i); else if((count & 0x7) == 0 || i == EV_ABS) printf("\n "); printf(" %04x%c", j * 8 + k, down); Loading Loading @@ -264,7 +292,16 @@ static int scan_dir(const char *dirname, int print_flags) static void usage(int argc, char *argv[]) { fprintf(stderr, "Usage: %s [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-q] [-c count] [-r] [device]\n", argv[0]); fprintf(stderr, "Usage: %s [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-p] [-q] [-c count] [-r] [device]\n", argv[0]); fprintf(stderr, " -t: show time stamps\n"); fprintf(stderr, " -n: don't print newlines\n"); fprintf(stderr, " -s: print switch states for given bits\n"); fprintf(stderr, " -S: print all switch states\n"); fprintf(stderr, " -v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32)\n"); fprintf(stderr, " -p: show possible events (errs, dev, name, pos. events)\n"); fprintf(stderr, " -q: quiet (clear verbosity mask)\n"); fprintf(stderr, " -c: print given number of events then exit\n"); fprintf(stderr, " -r: print rate events are received\n"); } int getevent_main(int argc, char *argv[]) Loading @@ -290,7 +327,7 @@ int getevent_main(int argc, char *argv[]) opterr = 0; do { c = getopt(argc, argv, "tns:Sv::qc:rh"); c = getopt(argc, argv, "tns:Sv::pqc:rh"); if (c == EOF) break; switch (c) { Loading @@ -317,6 +354,12 @@ int getevent_main(int argc, char *argv[]) print_flags |= PRINT_DEVICE | PRINT_DEVICE_NAME | PRINT_DEVICE_INFO | PRINT_VERSION; print_flags_set = 1; break; case 'p': print_flags = PRINT_DEVICE_ERRORS | PRINT_DEVICE | PRINT_DEVICE_NAME | PRINT_POSSIBLE_EVENTS; print_flags_set = 1; if(dont_block == -1) dont_block = 1; break; case 'q': print_flags = 0; print_flags_set = 1; Loading
toolbox/route.c +37 −8 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <stdarg.h> #include <errno.h> #include <string.h> Loading @@ -14,9 +15,14 @@ #include <arpa/inet.h> #include <linux/route.h> static void die(const char *s) static void die(const char *fmt, ...) { fprintf(stderr,"error: %s (%s)\n", s, strerror(errno)); va_list p; va_start(p, fmt); fprintf(stderr,"error(%s): ", strerror(errno)); fprintf(stderr, fmt, p); va_end(p); exit(-1); } Loading @@ -36,9 +42,10 @@ static inline void init_sockaddr_in(struct sockaddr_in *sin, const char *addr) } \ } while(0) /* current support two kinds of usage */ /* current support the following routing entries */ /* route add default dev wlan0 */ /* route add default gw 192.168.20.1 dev wlan0 */ /* route add net 192.168.1.1 netmask 255.255.255.0 gw 172.24.192.10 */ int route_main(int argc, char *argv[]) { Loading Loading @@ -68,7 +75,7 @@ int route_main(int argc, char *argv[]) EXPECT_NEXT(argc, argv); rt.rt_flags = RTF_UP | RTF_HOST; rt.rt_dev = argv[0]; if (ioctl(s, SIOCADDRT, &rt) < 0) die("SIOCADDRT"); if (ioctl(s, SIOCADDRT, &rt) < 0) die("SIOCADDRT\n"); }else if(!strcmp(argv[0], "gw")) { EXPECT_NEXT(argc, argv); rt.rt_flags = RTF_UP | RTF_GATEWAY; Loading @@ -76,16 +83,39 @@ int route_main(int argc, char *argv[]) if(isdigit(argv[0][0])){ init_sockaddr_in((struct sockaddr_in *)&(rt.rt_gateway), argv[0]); }else{ die("expecting an IP address for parameter \"gw\""); die("expecting an IP address for parameter \"gw\"\n"); } EXPECT_NEXT(argc, argv); if(!strcmp(argv[0], "dev")) { EXPECT_NEXT(argc, argv); rt.rt_dev = argv[0]; if (ioctl(s, SIOCADDRT, &rt) < 0){ die("SIOCADDRT"); die("SIOCADDRT\n"); } } } } else { char keywords[3][5] = { "net", "mask", "gw" }; struct sockaddr_in *paddr[3] = { &rt.rt_dst, &rt.rt_genmask, &rt.rt_gateway }; int k = 0; memset((char *) &rt, 0, sizeof(struct rtentry)); rt.rt_flags = RTF_UP | RTF_GATEWAY; do { if(!strcmp(argv[0], keywords[k])) { EXPECT_NEXT(argc, argv); if(isdigit(argv[0][0])) { init_sockaddr_in(paddr[k], argv[0]); } else { die("expecting an IP/MASK address for parameter %s\n", keywords[k]); } if(k < 2) EXPECT_NEXT(argc, argv); } else { die("expecting keyword(s)\n"); } } while(++k < 3); if(ioctl(s, SIOCADDRT, &rt) < 0) { die("SIOCADDRT\n"); } } } Loading @@ -94,4 +124,3 @@ int route_main(int argc, char *argv[]) return 0; }