movl $1, %eax
movl $0, %ebx
int $0x80
#ifndef _ASM_X86_UNISTD_32_H
#define _ASM_X86_UNISTD_32_H
/*
* This file contains the system call numbers.
*/
#define __NR_restart_syscall 0
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
#define __NR_write 4
#define __NR_open 5
#define __NR_close 6
#define __NR_waitpid 7
#define __NR_creat 8
#define __NR_link 9
#define __NR_unlink 10
系统调用 | 描述 |
brk | 改变数据段长度 |
mlock | 禁止对内存部分进行分页 |
mlockall | 禁止对调用进程进行分页 |
mmap | 把文件或者设备映射到内存中 |
mprotect | 控制对内存区域的许可访问 |
mremap | 重新映射虚拟内存地址 |
msync | 同步文件和内存映射 |
munlock | 允许对内存部分进行分页 |
munlockall | 允许对调用进程进行分页 |
munmap | 取消文件或者设备在内存中的映射 |
系统调用 | 描述 |
access | 检查设备权限 |
chmod | 改变设备的权限 |
chown | 改变设备的所有关系 |
close | 关闭设备文件描述符 |
dup | 复制设备文件描述符 |
fcntl | 操作设备描述符 |
fstat | 获得设备的状态 |
ioctl | 控制设备的参数 |
link | 把新的名称分配给设备描述符 |
lseek | 重新定位读取/写入文件偏移量 |
mknod | 为设备创建新的文件描述符 |
open | 为设备或文件打开/创建文件描述符 |
read | 读取设备文件描述符 |
write | 写入设备文件描述符 |
系统调用 | 描述 |
chdir | 改变工作目录 |
chroot | 改变根目录 |
flock | 在打开的文件上应用或者删除建议锁(advisory lock) |
statfs | 获得文件系统的统计数据 |
getcwd | 获得当前工作目录 |
mkdir | 创建目录 |
rmdir | 删除目录 |
symlink | 生成文件的新名称 |
umask | 设置文件创建掩码 |
mount | 挂载和卸载文件系统 |
swapon | 开始内存和文件系统的交换 |
swapoff | 停止内存和文件系统的交换 |
系统调用 | 描述 |
acct | 打开或者关闭进程计数 |
capget | 获得进程功能 |
capset | 设置进程功能 |
clone | 创建子进程 |
execve | 执行程序 |
exit | 终止当前进程 |
fork | 创建子进程 |
getgid | 获得组标识 |
getgrp | 获得/设置进程组 |
getppid | 获得进程标识 |
getpriority | 获得程序调度优先权 |
getuid | 获得用户标识 |
kill | 发送信号杀死进程 |
nice | 改变进程优先级 |
vfork | 创建子进程并且阻塞父进程 |
.section .data
output:
.ascii "This is a test message.\n"
output_end:
.equ len, output_end - output
.section .text
.global _start
_start:
movl $4, %eax
movl $1, %ebx
movl $output, %ecx
movl $len, %edx
int $0x80
movl $1, %eax
movl $0, %ebx
int $0x80
$ ./syscall
This is a test message.
.section .bss
.lcomm pid, 4
.lcomm uid, 4
.lcomm gid, 4
.section .text
.global _start
_start:
movl $20, %eax
int $0x80
movl %eax, pid
movl $24, %eax
int $0x80
movl %eax, uid
movl $47, %eax
int $0x80
movl %eax, gid
end:
movl $1, %eax
movl $0, %ebx
int $0x80
(gdb) x/d &pid
0x80490a4 <pid>: 3347
(gdb) x/d &uid
0x80490a8 <uid>: 1000
(gdb) x/d &gid
0x80490ac <gid>: 1000
#include <sys/sysinfo.h>
int sysinfo (struct sysinfo *info);
struct sysinfo {
long uptime; /* Seconds since boot */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
unsigned long totalram; /* Total usable main memory size */
unsigned long freeram; /* Available memory size */
unsigned long sharedram; /* Amount of shared memory */
unsigned long bufferram; /* Memory used by buffers */
unsigned long totalswap; /* Total swap space size */
unsigned long freeswap; /* swap space still available */
unsigned short procs; /* Number of current processes */
unsigned long totalhigh; /* Total high memory size */
unsigned long freehigh; /* Available high memory size */
unsigned int mem_unit; /* Memory unit size in bytes */
char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding for libc5 */
};
.section .data
result:
uptime:
.int 0
loads1:
.int 0
loads2:
.int 0
loads3:
.int 0
totalram:
.int 0
freeram:
.int 0
sharedram:
.int 0
bufferram:
.int 0
totalswap:
.int 0
freeswap:
.int 0
procs:
.byte 0x00, 0x00
totalhigh:
.int 0
freehigh:
.int 0
memunit:
.int 0
charf:
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
retu:
.int 0
.section .text
.global _start
_start:
nop
movl $result, %ebx
movl $116, %eax
int $0x80
movl $0, %ebx
movl $1, %eax
int $0x80
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |