mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-30 22:26:42 +00:00
new package:
- add package ureadahead
This commit is contained in:
parent
304503da24
commit
83b739af8e
@ -0,0 +1,155 @@
|
|||||||
|
From ee9c0b591bf16ca11bb354bc68dae75a903f3a64 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Scott James Remnant <scott@ubuntu.com>
|
||||||
|
Date: Tue, 27 Oct 2009 10:05:32 +0000
|
||||||
|
Subject: [PATCH] trace: add trace events for open(), exec() and uselib()
|
||||||
|
|
||||||
|
This patch uses TRACE_EVENT to add tracepoints for the open(),
|
||||||
|
exec() and uselib() syscalls so that ureadahead can cheaply trace
|
||||||
|
the boot sequence to determine what to read to speed up the next.
|
||||||
|
|
||||||
|
It's not upstream because it will need to be rebased onto the syscall
|
||||||
|
trace events whenever that gets merged, and is a stop-gap.
|
||||||
|
|
||||||
|
Signed-off-by: Scott James Remnant <scott@ubuntu.com>
|
||||||
|
---
|
||||||
|
fs/exec.c | 8 +++++
|
||||||
|
fs/open.c | 4 ++
|
||||||
|
include/trace/events/fs.h | 71 +++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
3 files changed, 83 insertions(+), 0 deletions(-)
|
||||||
|
create mode 100644 include/trace/events/fs.h
|
||||||
|
|
||||||
|
diff --git a/fs/exec.c b/fs/exec.c
|
||||||
|
index 172ceb6..c936999 100644
|
||||||
|
--- a/fs/exec.c
|
||||||
|
+++ b/fs/exec.c
|
||||||
|
@@ -56,6 +56,8 @@
|
||||||
|
#include <linux/fsnotify.h>
|
||||||
|
#include <linux/fs_struct.h>
|
||||||
|
|
||||||
|
+#include <trace/events/fs.h>
|
||||||
|
+
|
||||||
|
#include <asm/uaccess.h>
|
||||||
|
#include <asm/mmu_context.h>
|
||||||
|
#include <asm/tlb.h>
|
||||||
|
@@ -130,6 +132,10 @@ SYSCALL_DEFINE1(uselib, const char __user *, library)
|
||||||
|
|
||||||
|
fsnotify_open(file->f_path.dentry);
|
||||||
|
|
||||||
|
+ tmp = getname(library);
|
||||||
|
+ trace_uselib(tmp);
|
||||||
|
+ putname(library);
|
||||||
|
+
|
||||||
|
error = -ENOEXEC;
|
||||||
|
if(file->f_op) {
|
||||||
|
struct linux_binfmt * fmt;
|
||||||
|
@@ -665,6 +671,8 @@ struct file *open_exec(const char *name)
|
||||||
|
|
||||||
|
fsnotify_open(file->f_path.dentry);
|
||||||
|
|
||||||
|
+ trace_open_exec(name);
|
||||||
|
+
|
||||||
|
err = deny_write_access(file);
|
||||||
|
if (err)
|
||||||
|
goto exit;
|
||||||
|
diff --git a/fs/open.c b/fs/open.c
|
||||||
|
index 04b9aad..41c87f3 100644
|
||||||
|
--- a/fs/open.c
|
||||||
|
+++ b/fs/open.c
|
||||||
|
@@ -31,6 +31,9 @@
|
||||||
|
#include <linux/falloc.h>
|
||||||
|
#include <linux/fs_struct.h>
|
||||||
|
|
||||||
|
+#define CREATE_TRACE_POINTS
|
||||||
|
+#include <trace/events/fs.h>
|
||||||
|
+
|
||||||
|
int vfs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
||||||
|
{
|
||||||
|
int retval = -ENODEV;
|
||||||
|
@@ -1041,6 +1044,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, int mode)
|
||||||
|
} else {
|
||||||
|
fsnotify_open(f->f_path.dentry);
|
||||||
|
fd_install(fd, f);
|
||||||
|
+ trace_do_sys_open(tmp, flags, mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
putname(tmp);
|
||||||
|
diff --git a/include/trace/events/fs.h b/include/trace/events/fs.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..e967c55
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/include/trace/events/fs.h
|
||||||
|
@@ -0,0 +1,71 @@
|
||||||
|
+#undef TRACE_SYSTEM
|
||||||
|
+#define TRACE_SYSTEM fs
|
||||||
|
+
|
||||||
|
+#if !defined(_TRACE_FS_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||||
|
+#define _TRACE_FS_H
|
||||||
|
+
|
||||||
|
+#include <linux/fs.h>
|
||||||
|
+#include <linux/tracepoint.h>
|
||||||
|
+
|
||||||
|
+TRACE_EVENT(do_sys_open,
|
||||||
|
+
|
||||||
|
+ TP_PROTO(char *filename, int flags, int mode),
|
||||||
|
+
|
||||||
|
+ TP_ARGS(filename, flags, mode),
|
||||||
|
+
|
||||||
|
+ TP_STRUCT__entry(
|
||||||
|
+ __string( filename, filename )
|
||||||
|
+ __field( int, flags )
|
||||||
|
+ __field( int, mode )
|
||||||
|
+ ),
|
||||||
|
+
|
||||||
|
+ TP_fast_assign(
|
||||||
|
+ __assign_str(filename, filename);
|
||||||
|
+ __entry->flags = flags;
|
||||||
|
+ __entry->mode = mode;
|
||||||
|
+ ),
|
||||||
|
+
|
||||||
|
+ TP_printk("\"%s\" %x %o",
|
||||||
|
+ __get_str(filename), __entry->flags, __entry->mode)
|
||||||
|
+);
|
||||||
|
+
|
||||||
|
+TRACE_EVENT(uselib,
|
||||||
|
+
|
||||||
|
+ TP_PROTO(char *filename),
|
||||||
|
+
|
||||||
|
+ TP_ARGS(filename),
|
||||||
|
+
|
||||||
|
+ TP_STRUCT__entry(
|
||||||
|
+ __string( filename, filename )
|
||||||
|
+ ),
|
||||||
|
+
|
||||||
|
+ TP_fast_assign(
|
||||||
|
+ __assign_str(filename, filename);
|
||||||
|
+ ),
|
||||||
|
+
|
||||||
|
+ TP_printk("\"%s\"",
|
||||||
|
+ __get_str(filename))
|
||||||
|
+);
|
||||||
|
+
|
||||||
|
+TRACE_EVENT(open_exec,
|
||||||
|
+
|
||||||
|
+ TP_PROTO(char *filename),
|
||||||
|
+
|
||||||
|
+ TP_ARGS(filename),
|
||||||
|
+
|
||||||
|
+ TP_STRUCT__entry(
|
||||||
|
+ __string( filename, filename )
|
||||||
|
+ ),
|
||||||
|
+
|
||||||
|
+ TP_fast_assign(
|
||||||
|
+ __assign_str(filename, filename);
|
||||||
|
+ ),
|
||||||
|
+
|
||||||
|
+ TP_printk("\"%s\"",
|
||||||
|
+ __get_str(filename))
|
||||||
|
+);
|
||||||
|
+
|
||||||
|
+#endif /* _TRACE_FS_H */
|
||||||
|
+
|
||||||
|
+/* This part must be outside protection */
|
||||||
|
+#include <trace/define_trace.h>
|
||||||
|
--
|
||||||
|
1.6.3.3
|
||||||
|
|
20
packages/sysutils/ureadahead/build
Executable file
20
packages/sysutils/ureadahead/build
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. config/options
|
||||||
|
|
||||||
|
$SCRIPTS/build toolchain
|
||||||
|
$SCRIPTS/build libnih
|
||||||
|
$SCRIPTS/build e2fsprogs
|
||||||
|
|
||||||
|
cd $PKG_BUILD
|
||||||
|
EXT2FS_LIBS="-lext2fs -lcom_err" \
|
||||||
|
./configure --host=$TARGET_NAME \
|
||||||
|
--build=$HOST_NAME \
|
||||||
|
--prefix=/usr \
|
||||||
|
--sysconfdir=/etc \
|
||||||
|
--datadir=/usr/share \
|
||||||
|
--localstatedir=/var \
|
||||||
|
--disable-static \
|
||||||
|
--enable-shared \
|
||||||
|
|
||||||
|
make
|
10
packages/sysutils/ureadahead/init.d/07_ureadahead
Executable file
10
packages/sysutils/ureadahead/init.d/07_ureadahead
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
# start the ureadahead daemon
|
||||||
|
#
|
||||||
|
# runlevels: openelec, textmode
|
||||||
|
|
||||||
|
(
|
||||||
|
progress "Starting ureadahead"
|
||||||
|
|
||||||
|
ureadahead --daemon --timeout=30 > /dev/null 2>&1
|
||||||
|
|
||||||
|
)&
|
6
packages/sysutils/ureadahead/install
Executable file
6
packages/sysutils/ureadahead/install
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. config/options
|
||||||
|
|
||||||
|
mkdir -p $INSTALL/usr/sbin
|
||||||
|
cp -P $PKG_BUILD/src/ureadahead $INSTALL/usr/sbin
|
1
packages/sysutils/ureadahead/url
Normal file
1
packages/sysutils/ureadahead/url
Normal file
@ -0,0 +1 @@
|
|||||||
|
http://sources.openelec.tv/svn/ureadahead-111.tar.bz2
|
Loading…
x
Reference in New Issue
Block a user