🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: cn.bbs.comp.unix.programming.kernel
1 messages
1 total messages Started by fion Wed, 13 Mar 2002 09:56
���һ������unresolved symbol������
#64
Author: fion
Date: Wed, 13 Mar 2002 09:56
82 lines
3349 bytes
�������ˣ�Ҳ�Լ�����һЩ�취��������Ȼû�н����������̴��

Դ�������£����Ƚ϶̣�
�õ���sys_semget,sys_semctl,sys_semop

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sem.h>
#include <asm/uaccess.h>
#include <sys/syscall.h>
#define __NR_sem_init 240
#define __NR_sem_rele 241
#define __NR_sem_p    242
#define __NR_sem_v    243
extern void * sys_call_table[];
int (*original_call)(void);
asmlinkage int sys_sem_init(key_t key, int count)
{
        int semid;
        union semun arg;
        arg.val = count;
        semid = sys_semget(key, 1, IPC_CREAT|0777);
        sys_semctl(semid, 0, SETVAL, arg);
        return semid;
}
asmlinkage int sys_sem_rele(int semid)
{
        union semun arg;
        sys_semctl(semid, 0, IPC_RMID, arg);
        return 0;
}
asmlinkage int sys_sem_v(int semid, struct sembuf * psemb)
{
        struct sembuf semb;
        semb.sem_num = 0;
        semb.sem_op = 1;
        semb.sem_flg = 0;
        copy_to_user(psemb, &semb, sizeof(semb));
        return (sys_semop(semid, psemb, 1));
}
asmlinkage int sys_sem_p(int semid, struct sembuf * psemb)
{
        struct sembuf semb;
        semb.sem_num = 0;
        semb.sem_op = -1;
        semb.sem_flg = 0;
        copy_to_user(psemb, &semb, sizeof(semb));
        return (sys_semop(semid, psemb, 1));
}
int init_module()
{
        sys_call_table[__NR_sem_init] = sys_sem_init;
        sys_call_table[__NR_sem_rele] = sys_sem_rele;
        sys_call_table[__NR_sem_p] = sys_sem_p;
        sys_call_table[__NR_sem_v] = sys_sem_v;
        return 0;
}
void cleanup_module()
{
        sys_call_table[__NR_sem_init] = original_call;
        sys_call_table[__NR_sem_rele] = original_call;
        sys_call_table[__NR_sem_p] = original_call;
        sys_call_table[__NR_sem_v] = original_call;
}

����û����
gcc -DMODULE -D__KERNEL__ -c 
ʹ�õ�ϵͳ��rh7.1
insmod��ʱ�������һ�´�����ʾ
sc.o: unresolved symbol sys_semop
sc.o: unresolved symbol sys_semctl
sc.o: unresolved symbol sys_semget

��֪����ν������ָ��
BTW���ҿ���һ��System.map�ļ�
��һ����Ϣ
c0179780 T sys_semget
c017a750 T sys_semop
c017a580 T sys_semctl
��֪�������дT��ʲô��˼��
--
�� ��Դ:��UNIX��� apue.dhs.org��[FROM: 211.69.197.129] 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads