]> code.ossystems Code Review - openembedded-core.git/commitdiff
sreadahead: Add a patch to set the app to io-idle running status.
authoraustin <austin@azhang.bj.intel.com>
Fri, 7 Nov 2008 10:01:12 +0000 (05:01 -0500)
committerRichard Purdie <rpurdie@linux.intel.com>
Mon, 1 Dec 2008 20:40:32 +0000 (20:40 +0000)
This patch sets the sreadahead to io-idle stauts when it is running,
so that sreadahead will not preempt IO with other apps.

meta-moblin/packages/sreadahead/sreadahead-0.02/set_to_idle.patch [new file with mode: 0644]
meta-moblin/packages/sreadahead/sreadahead_0.02.bb

diff --git a/meta-moblin/packages/sreadahead/sreadahead-0.02/set_to_idle.patch b/meta-moblin/packages/sreadahead/sreadahead-0.02/set_to_idle.patch
new file mode 100644 (file)
index 0000000..b486590
--- /dev/null
@@ -0,0 +1,39 @@
+diff -Naurp sreadahead-0.02/readahead.c sreadahead-0.02-nice/readahead.c
+--- sreadahead-0.02/readahead.c        2008-11-06 00:57:17.000000000 -0500
++++ sreadahead-0.02-nice/readahead.c   2008-11-06 02:28:29.000000000 -0500
+@@ -26,7 +26,18 @@
+ #include <errno.h>
+ #include "readahead.h"
++#include <sys/syscall.h>
++# if defined(__i386__)
++#  define __NR_ioprio_set     289
++# elif defined(__x86_64__)
++#  define __NR_ioprio_set     251
++# else
++#  error "Unsupported arch"
++# endif
++
++#define IOPRIO_WHO_PROCESS    1
++#define IOPRIO_CLASS_SHIFT    13
+ #define MAXR 1024
+ static struct readahead files[MAXR];
+ static unsigned int total_files = 0;
+@@ -68,7 +79,15 @@ void *one_thread(void *ptr)
+ int main(int argc, char **argv)
+ {
+-      FILE *file = fopen("/etc/readahead.packed", "r");
++      int iopriority = 7; /* hard code for idle */
++      int iopriority_class = 3; /* 3 stands for idle */
++      int pid = 0;
++      FILE *file;
++
++      if (syscall(__NR_ioprio_set, IOPRIO_WHO_PROCESS, pid, iopriority | iopriority_class << IOPRIO_CLASS_SHIFT) == -1)
++              perror("Can not set priority to idle class");
++
++      file = fopen("/etc/readahead.packed", "r");
+       if (!file) {
+               perror("Couldnt open /etc/readahead.packed");
+               return -errno;
index 1ca5f1655704dd143942228a02c3742614438541..b7341010aa08a7963a61be7ee0b1c377bf3ebbca 100644 (file)
@@ -9,6 +9,7 @@ inherit update-rc.d
 SRC_URI = "http://www.moblin.org/sites/all/files/sreadahead-${PV}.tar.gz \
          file://sreadahead-0.02-make.patch;patch=1 \
          file://readahead_c.patch;patch=1 \
+         file://set_to_idle.patch;patch=1 \
          file://sreadahead-generate.sh \
          file://sreadahead.sh"