bionic syscall 添加函数
来源:互联网 发布:甲文:君子之学也,入乎 编辑:程序博客网 时间:2024/05/21 07:12
android: 4.0.4
硬件: nexus
内核: 3.0.8
kernel:
--------------------------------------------------------------------------------------------------------------------kernel_src/fs/open.c 添加:
SYSCALL_DEFINE2(mymul,int, x,int,y) 2是参数个数。 宏替换完,函数名为 sys_mymul
{
int z;
printk("here is add a log in sys_mymul\n");
z=x*y;
return z;
}
--------------------------------------------------------------------------------------------------------------------
kernel_src/arch/arm/kernel/calls.S
/*376 */ CALL(sys_mymul) 函数table:跳转的偏移地址在376
--------------------------------------------------------------------------------------------------------------------
kernel_src/arch/arm/include/asm/unistd.h
#define __NR_mymul (__NR_SYSCALL_BASE+376)
__NR_mymul 在android的bionic内有个文件需要跳转到这个label.
--------------------------------------------------------------------------------------------------------------------
bionic:
--------------------------------------------------------------------------------------------------------------------
bionic/libc/include/sys/linux-syscalls.h 声明__NR_mymul在table的偏移。
#define __NR_mymul (__NR_SYSCALL_BASE + 376)
--------------------------------------------------------------------------------------------------------------------
bionic/libc/arch-arm/syscalls/mymul.S: 实现跳转
ENTRY(mymul)
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_mymul
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
END(mymul)
--------------------------------------------------------------------------------------------------------------------
bionic/libc/arch-arm/syscalls.mk 把跳转文件添加到会被编译的文件列表呢
syscall_src += arch-arm/syscalls/mymul.S
--------------------------------------------------------------------------------------------------------------------
bionic/libc/unistd/open.c 添加如下:
extern int mymul(int,int); //jjd
int Mymul(int x,int y){
printf("bionic.mymul");
return mymul(x,y);
}
--------------------------------------------------------------------------------------------------------------------
bionic/libc/include/fcntl.h 添加:
extern int Mymul(int,int);
--------------------------------------------------------------------------------------------------------------------
在系统里如果使用到Mymul函数,添加fcntl.h头文件即可。
SYSCALL_DEFINE2(mymul,int, x,int,y) 2是参数个数。 宏替换完,函数名为 sys_mymul
{
int z;
printk("here is add a log in sys_mymul\n");
z=x*y;
return z;
}
--------------------------------------------------------------------------------------------------------------------
kernel_src/arch/arm/kernel/calls.S
/*376 */ CALL(sys_mymul) 函数table:跳转的偏移地址在376
--------------------------------------------------------------------------------------------------------------------
kernel_src/arch/arm/include/asm/unistd.h
#define __NR_mymul (__NR_SYSCALL_BASE+376)
__NR_mymul 在android的bionic内有个文件需要跳转到这个label.
--------------------------------------------------------------------------------------------------------------------
bionic:
--------------------------------------------------------------------------------------------------------------------
bionic/libc/include/sys/linux-syscalls.h 声明__NR_mymul在table的偏移。
#define __NR_mymul (__NR_SYSCALL_BASE + 376)
--------------------------------------------------------------------------------------------------------------------
bionic/libc/arch-arm/syscalls/mymul.S: 实现跳转
ENTRY(mymul)
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_mymul
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
END(mymul)
--------------------------------------------------------------------------------------------------------------------
bionic/libc/arch-arm/syscalls.mk 把跳转文件添加到会被编译的文件列表呢
syscall_src += arch-arm/syscalls/mymul.S
--------------------------------------------------------------------------------------------------------------------
bionic/libc/unistd/open.c 添加如下:
extern int mymul(int,int); //jjd
int Mymul(int x,int y){
printf("bionic.mymul");
return mymul(x,y);
}
--------------------------------------------------------------------------------------------------------------------
bionic/libc/include/fcntl.h 添加:
extern int Mymul(int,int);
--------------------------------------------------------------------------------------------------------------------
在系统里如果使用到Mymul函数,添加fcntl.h头文件即可。
- bionic syscall 添加函数
- linux下syscall函数
- Bionic中的ptrace函数
- linux下syscall函数,SYS_gettid
- SysCall
- Syscall
- bionic
- linux下syscall函数,SYS_gettid,SYS_tgkill
- linux下syscall函数,SYS_gettid,SYS_tgkill
- linux下syscall函数,SYS_gettid,SYS_tgkill
- android上Bionic不支持pthread_cancel等函数
- linux 2.6.22-14 动态添加syscall - [Linux]
- linux syscall
- syscall open
- Win32k syscall
- syscall.c
- Bionic C
- Bionic library
- ABAP常用表
- oracle主键自增
- source insight如何删除没用的project
- execute、executeQuery和executeUpdate之间的区别
- vc如何自定义消息与在线程中向主窗体控件发送数据
- bionic syscall 添加函数
- JAVA求 出现次数最多数值最大的数
- yii_wiki_216_update-delete-model-with-cjuidialog-works-in-cgridview(通过CJuiDialog在CGridView中CRUD)
- HTML常用特殊符号集
- 任务栈的工作原理与特点
- SCRUM Best Practice Memo
- rails防SQL注入
- JVM一些基本知识
- 薩芬大事規範