🚀 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 //sigh�����˼��� Wed, 13 Mar 2002 06:14
Fion����sys_semget������(ת��)
#51
Author: //sigh�����˼���
Date: Wed, 13 Mar 2002 06:14
67 lines
2791 bytes
#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 module_init()
{
        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;
}
int module_cleanup()
{
        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;
        return 0;
}
--
�� ��Դ:��UNIX��� apue.dhs.org��[FROM: 211.69.197.129] --
�� ת��:��UNIX��� apue.dhs.org��[FROM: 211.101.140.97]
--
�� �޸�:��Luther � 03��13��14:14:38 �޸ı��ġ�[FROM: 211.101.140.97]
�� ת��:��UNIX��� apue.dhs.org��[FROM: 211.101.140.97]
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