从新创建的系统调用中访问系统调用

时间:2016-03-30 04:51:11

标签: c minix

我正在使用Minix 3。

我实现了一个名为do_identify的新系统调用,它返回当前进程的id或父进程。以下是 /usr/src/servers/pm/misc.c 及其库的系统调用的定义,我将其命名为 identifylib.h < / strong>,在 /usr/include 下:

定义:

PUBLIC int do_identify()
{
    int identifier = m_in.m1_i1;
    if(identifier == 1)
    {
        printf("Current Process ID = %d\n", getpid());
        return getpid();
    }
    else
    {
        printf("Parent Process ID = %d\n", getppid());
        return getppid();
    }
}

库:

#include <lib.h>
#include <unistd.h>

PUBLIC int identify (int process)
{
    message m;
    m.m1_i1 = process;
    return ( _syscall(PM_PROC_NR, IDENTIFY, &m) );
}

现在,当我测试它时,我收到以下错误:

  

对getppid的未定义引用

我是否错误地调用了此功能?或者我不应该在系统调用中调用此函数?我不知道它应该在minix上意味着什么。

以下是测试文件: test_id.c

#include <identifylib.h>

int main(void)
{
    printf("Process ID = %d\n" identify(1));
    return 0;
}

0 个答案:

没有答案