⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kmem.c

📁 NAT协议完整源代码
💻 C
字号:
/* * Copyright (C) 1993-2000 by Darren Reed. * * Redistribution and use in source and binary forms are permitted * provided that this notice is preserved and due credit is given * to the original author and the contributors. *//* * kmemcpy() - copies n bytes from kernel memory into user buffer. * returns 0 on success, -1 on error. */#include <stdio.h>#include <sys/types.h>#include <sys/uio.h>#include <unistd.h>#include <fcntl.h>#include <sys/file.h>#include "kmem.h"#if !defined(lint)static const char sccsid[] = "@(#)kmem.c	1.4 1/12/96 (C) 1992 Darren Reed";static const char rcsid[] = "@(#)$Id: kmem.c,v 2.2 2000/03/13 22:10:25 darrenr Exp $";#endifstatic	int	kmemfd = -1;int	openkmem(){	if ((kmemfd = open(KMEM,O_RDONLY)) == -1)	    {		perror("kmeminit:open");		return -1;	    }	return kmemfd;}int	kmemcpy(buf, pos, n)register char	*buf;long	pos;register int	n;{	register int	r;	if (!n)		return 0;	if (kmemfd == -1)		if (openkmem() == -1)			return -1;	if (lseek(kmemfd, pos, 0) == -1)	    {		perror("kmemcpy:lseek");		return -1;	    }	while ((r = read(kmemfd, buf, n)) < n)		if (r <= 0)		    {			perror("kmemcpy:read");			return -1;		    }		else		    {			buf += r;			n -= r;		    }	return 0;}int	kstrncpy(buf, pos, n)register char	*buf;long	pos;register int	n;{	register int	r;	if (!n)		return 0;	if (kmemfd == -1)		if (openkmem() == -1)			return -1;	if (lseek(kmemfd, pos, 0) == -1)	    {		perror("kmemcpy:lseek");		return -1;	    }	while (n > 0) {		r = read(kmemfd, buf, 1);		if (r <= 0)		    {			perror("kmemcpy:read");			return -1;		    }		else		    {			if (*buf == '\0')				break;			buf++;			n--;		    }	}	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -