2023-2024-1 20232808《Linux内核原理与分析》第六周作业

分析 system_call 中断处理过程

使用 gdb 跟踪分析一个系统调用内核函数(上周选择的那一个系统调用),系统调用列表参见 torvalds/linux。推荐在实验楼 Linux 虚拟机环境下完成实验。

实验过程

打开menu文件夹中的test.c,加入系统调用的两个函数,代码如下:

int rename_2808(){
        int ret;
        char oldname[ ] = "hello.c";
        char newname[ ] = "newhello.c";
        ret = rename(oldname, newname);
        if(!ret)
                printf("Renamed successfully!\n");
        else
                printf("Unable to rename the file!\n");
        return 0;
}
int rename_asm(){
        int ret;
        char *oldname = "hello.c";
        char *newname = "newhello.c";
        asm volatile(
                "movl %2,%%ecx\n\t"
                "movl %1,%%ebx\n\t"
                "movl $0x26,%%eax\n\t"
                "int $0x80"
                : "=a"(ret)
                : "b"(oldname), "c"(newname)
        );
        if(ret == 0)
                printf("Renamed successfully!\n");
        else
                printf("Unable to rename the file!\n");
        return 0;
}

main.c

MenuConfig("rename_2808","Modify the file",rename_2808);
MenuConfig("rename_asm","Modify the file",rename_asm);

启动menuos
在这里插入图片描述
gdb调试
在这里插入图片描述
在这里插入图片描述
sys_rename处打断点
在这里插入图片描述

流程分析

在这里插入图片描述

ChatGPT使用

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值