本文整理汇总了C++中read_mem函数的典型用法代码示例。如果您正苦于以下问题:C++ read_mem函数的具体用法?C++ read_mem怎么用?C++ read_mem使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了read_mem函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: strcmp_call
static int strcmp_call(void *opaque)
{
int read_err = 0;
int i = 0;
strcmp_value *scv=malloc(sizeof (strcmp_value));
if(tracepid == 0)
{
return 0;
}
read_reg(esp_reg, &esp);
read_reg(eip_reg, &eip);
read_err = read_mem(esp, 4, (unsigned char*)buf);
if (read_err)
return 0;
scv->string1=buf[1];
scv->string2=buf[2];
char string_cmd[20];
char string_list[20];
bool read_cmd =read_mem(scv->string1, 20, (unsigned char*)string_cmd);
bool read_list=read_mem(scv->string2, 20, (unsigned char*)string_list);
scv->hook_handle=hookapi_hook_return(buf[0], strcmp_ret, scv, sizeof(scv));
return 0;
}
开发者ID:wncbb,项目名称:bishe,代码行数:28,代码来源:strcmp.c
示例2: replay_tty_ioctl
SCOPE int
replay_tty_ioctl(int fd, uint32_t cmd, uint32_t arg,
const struct syscall_regs * regs)
{
/* write eax is done in ioctl.c */
int32_t eax = read_int32();
switch (cmd) {
case TCGETS:
if (arg != 0)
read_mem(arg, sizeof(struct termios));
return eax;
case TIOCGWINSZ:
if (arg != 0)
read_mem(arg, sizeof(struct winsize));
return eax;
case FIONREAD:
if (arg != 0)
read_mem(arg, sizeof(int));
return eax;
case FIONBIO:
return eax;
case TCGETA:
if (arg != 0)
read_mem(arg, sizeof(struct termio));
return eax;
case TCSETA:
return eax;
default:
INJ_WARNING("doesn't know such tty ioctl: 0x%x\n", cmd);
__exit(-1);
}
return eax;
}
开发者ID:pi3orama,项目名称:Snitchaser,代码行数:33,代码来源:ioctl_tty.c
示例3: __interrupt
void __interrupt() {
irq_received = 1;
/* check if vga requested interrupt */
uint32_t vga_irq = read_mem(VGA_BASEADDR + VGA_INT_OFFSET);
if (vga_irq) {
/* call the service routine */
vga_isr();
/* clear interrupt */
write_mem(VGA_BASEADDR + VGA_INT_OFFSET, vga_irq);
}
/* check if timer 0 requested interrupt */
uint32_t timer_0_csr = read_mem(TIMER_BASEADDR + TIMER_0_CSR_OFFSET);
if (timer_0_csr & TIMER_INTERRUPT) {
/* call the service routine */
timer_0_isr();
/* clear the timer interrupt */
write_mem(TIMER_BASEADDR + TIMER_0_CSR_OFFSET, timer_0_csr);
}
uint32_t timer_1_csr = read_mem(TIMER_BASEADDR + TIMER_1_CSR_OFFSET);
if (timer_1_csr & TIMER_INTERRUPT) {
/* call the service routine */
timer_1_isr();
/* clear the timer interrupt */
write_mem(TIMER_BASEADDR + TIMER_1_CSR_OFFSET, timer_1_csr);
}
/* check if uart requested interrupt */
/* FIXME: no uart in TLM platform */
}
开发者ID:elkhadiy,项目名称:cours-tlm,代码行数:31,代码来源:main.c
示例4: replay__newselect
int SCOPE
replay__newselect(const struct syscall_regs * regs)
{
int32_t eax = read_int32();
int n;
uint32_t inp;
uint32_t outp;
uint32_t exp;
read_obj(n);
read_obj(inp);
read_obj(outp);
read_obj(exp);
ASSERT(n == regs->ebx, regs, "");
ASSERT(inp == regs->ecx, regs, "");
ASSERT(outp == regs->edx, regs, "");
ASSERT(exp == regs->esi, regs, "");
int fd_bytes = FDS_BYTES(n);
if (inp != 0)
read_mem(inp, fd_bytes);
if (outp != 0)
read_mem(outp, fd_bytes);
if (exp != 0)
read_mem(exp, fd_bytes);
return eax;
}
开发者ID:pi3orama,项目名称:Snitchaser,代码行数:28,代码来源:_newselect.c
示例5: getsockname_ret
/* Return hook (executed after the return instruction) */
static int getsockname_ret(void *opaque)
{
static int offset = 0;
int read_err = 0;
uint32_t bufRealLen = 0;
getsockname_t *s = (getsockname_t *)opaque;
struct sockaddr_in addrData;
char addrStr[INET_ADDRSTRLEN];
/* Remove return hook */
hookapi_remove_hook(s->hook_handle);
/* Check return value -> status */
uint32_t eax = 0;
read_reg(eax_reg, &eax);
if (eax != 0) return 0;
/* Read size of address structure */
read_err = read_mem(s->bufLenPtr, 4, (unsigned char*)&bufRealLen);
if (!read_err) {
WRITE ("tracenetlog","\tNumBytesWritten: %u\n",bufRealLen);
}
else {
WRITE ("tracenetlog","\tCould not get number of bytes written\n");
return 0;
}
/* Read the address structure */
read_err = read_mem(s->bufStart, 16, (unsigned char*)&addrData);
if (read_err) return 0;
/* Print the address structure */
inet_ntop(AF_INET, &addrData.sin_addr, addrStr, sizeof(addrStr));
WRITE ("tracenetlog","\tFamily: %d Port: %u Address: %s\n",
addrData.sin_family,ntohs(addrData.sin_port),addrStr);
/* Taint address structure */
if (bufRealLen > 0) {
hook_taint_record_t tr;
tr.source = TAINT_SOURCE_API_SOCK_INFO_IN;
tr.origin = GETSOCKNAME_ORIGIN;
tr.offset = offset;
taint_mem(s->bufStart+2, 6, (void *)&tr);
}
/* Increment the taint offset */
offset += 6;
/* Free structure used to pass info between call and return hooks */
if (s) free(s);
return 0;
}
开发者ID:anhkgg,项目名称:temu,代码行数:55,代码来源:sample_hook.c
示例6: replay_wait4
int SCOPE
replay_wait4(const struct syscall_regs * regs)
{
int32_t eax = read_int32();
uintptr_t stat_addr = read_uint32();
ASSERT(stat_addr == regs->ecx, regs, "stat_addr inconsistent\n");
if (stat_addr != 0)
read_mem(stat_addr, sizeof(int));
uintptr_t ru = read_uint32();
ASSERT(ru == regs->esi, regs, "ru inconsistent\n");
if (ru != 0)
read_mem(ru, sizeof(struct rusage));
return eax;
}
开发者ID:pi3orama,项目名称:Snitchaser,代码行数:14,代码来源:wait4.c
示例7: dump_memory_contents
void dump_memory_contents(const char cmd, char * data){
char buf[64];
bool printed_ellipsis = false;
Serial.println("Memory:");
for (uint16_t i = targetDeviceRomOffset; i < targetDeviceRomOffset+targetDeviceRomSize; i += 8) {
uint8_t mem[] = {
read_mem(i+0), read_mem(i+1), read_mem(i+2), read_mem(i+3),
read_mem(i+4), read_mem(i+5), read_mem(i+6), read_mem(i+7),
};
bool all_zero = true;
for (int i = 0; i < 8; i++)
all_zero = all_zero && mem[i] == 0;
if (!all_zero || i == targetDeviceRomOffset || i == targetDeviceRomOffset+targetDeviceRomSize-8) {
sprintf(
buf,
"%04x: %02x %02x %02x %02x %02x %02x %02x %02x",
i,
mem[0], mem[1], mem[2], mem[3],
mem[4], mem[5], mem[6], mem[7]
);
printed_ellipsis = false;
Serial.println(buf);
} else {
if (!printed_ellipsis) {
Serial.println("...");
printed_ellipsis = true;
}
}
}
}
开发者ID:querry43,项目名称:8085,代码行数:33,代码来源:serial_interface.cpp
示例8: ldm1_inst
void ldm1_inst(int inst, ARMProc *proc) {
int i;
LSMAddrResult *result;
LSMAddrResult *(*func)(int, ARMProc *);
int register_list;
int address;
int start_address;
int end_address;
int value;
int **reg;
if(!check_condition(proc, inst))
return;
register_list = getbits(inst, 0, 16);
lsm_addr_modes = lsm_addressing_dict();
reg = &proc->r0;
for(i = 0; i < LSM_ADDRESSING_NUMBER; i++) {
if(test_inst(lsm_addr_modes[i], inst)) {
func = lsm_addr_modes[i]->execute;
result = (*func)(inst, proc);
break;
}
}
start_address = result->start_address;
end_address = result->end_address;
address = start_address;
for(i = 0; i < 15; i++) {
if(getbit(register_list, i)) {
**(reg + i) = read_mem(proc, address, 4);
address += 4;
}
}
if(getbit(register_list, 15)) {
value = read_mem(proc, address, 4);
*proc->pc = value & 0xFFFFFFFE;
address += 4;
}
if(end_address != address - 4) {
fprintf(stderr, "Load memory error");
}
}
开发者ID:iamedu,项目名称:armdev,代码行数:49,代码来源:ldstr.c
示例9: equalizer_driver_ioctl
/*
* Handle ioctl() calls from userspace:
* Note extensive error checking of arguments
*/
static long equalizer_driver_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
{
u16 *dataArray = kmalloc(SAMPLEBYTES, GFP_KERNEL); //allocating space for data array
switch (cmd) {
case FFT_DRIVER_WRITE_DIGIT:
if (copy_from_user(dataArray, (u16 *) arg,
sizeof(u16)))
return -EACCES;
write_mem(dataArray); //write dataArray
break;
case FFT_DRIVER_READ_DIGIT:
if (copy_from_user(dataArray, (u16*) arg,
sizeof(u16)))
return -EACCES;
read_mem(dataArray); //read from dataArray
if (copy_to_user((u16 *) arg, dataArray,
sizeof(u16)))
return -EACCES;
break;
default:
return -EINVAL;
}
return 0;
}
开发者ID:SabinaS,项目名称:Equalizer,代码行数:32,代码来源:equalizer_driver.c
示例10: ds2431_read
uint8_t ds2431_read(void)
{
uint8_t i, rt = 0;
for (i = 0; i < 10; i ++)
{
ow_rst();
udelay(9000);
rt = read_rom();
if (rt == 1)
{
//ROM读取成功,则读取MEM
rt = read_mem();
if (rt == 1)
{
//都读取成功,则退出
return 1;
}
}
}
//读取失败
return 0;
}
开发者ID:honami520,项目名称:ds2431_isp,代码行数:27,代码来源:ds2431.c
示例11: vionet_notify_rx
void
vionet_notify_rx(struct vionet_dev *dev)
{
uint64_t q_gpa;
uint32_t vr_sz;
char *vr;
struct vring_avail *avail;
vr_sz = vring_size(VIONET_QUEUE_SIZE);
q_gpa = dev->vq[dev->cfg.queue_notify].qa;
q_gpa = q_gpa * VIRTIO_PAGE_SIZE;
vr = malloc(vr_sz);
if (vr == NULL) {
log_warn("malloc error getting vionet ring");
return;
}
if (read_mem(q_gpa, vr, vr_sz)) {
log_warnx("error reading gpa 0x%llx", q_gpa);
free(vr);
return;
}
/* Compute offset into avail ring */
avail = (struct vring_avail *)(vr +
dev->vq[dev->cfg.queue_notify].vq_availoffset);
dev->rx_added = 1;
dev->vq[0].notified_avail = avail->idx;
free(vr);
}
开发者ID:mosconi,项目名称:openbsd,代码行数:33,代码来源:virtio.c
示例12: Dgemm_internal
cl_int Dgemm_internal(
cl_env *env, double *a, double *b, double *c, double alpha, double beta,
clblasTranspose transA, clblasTranspose transB,
int ar, int ac, int br, int bc, int cr, int cc, int size_a, int size_b, int size_c)
{
CHECK(clblasSetup());
cl_event events[NEVENTS];
int nevent = 0;
cl_mem mem_a = create_mem(env, a, size_a, CL_MEM_READ_ONLY, &(events[nevent++]));
cl_mem mem_b = create_mem(env, b, size_b, CL_MEM_READ_ONLY, &(events[nevent++]));
cl_mem mem_c;
if (beta != 0) mem_c = create_mem(env, c, size_c, CL_MEM_READ_WRITE, &(events[nevent++]));
else mem_c = create_mem(env, NULL, size_c, CL_MEM_READ_WRITE, NULL);
cl_int err = clblasDgemm(clblasColumnMajor, transA, transB,
ar, bc, ac, alpha, mem_a, 0, ar, mem_b, 0, br, beta, mem_c, 0, cr,
1, &(env->queues[0]), nevent, events, &(events[nevent]));
CHECK(err);
events[nevent+1] = *read_mem(env, mem_c, c, size_c, 1, &(events[nevent]));
CHECK(clWaitForEvents(1, &(events[nevent+1])));
CHECK(clReleaseMemObject(mem_a));
CHECK(clReleaseMemObject(mem_b));
CHECK(clReleaseMemObject(mem_c));
clblasTeardown();
return CL_SUCCESS;
}
开发者ID:yeomii,项目名称:RclBLAS,代码行数:26,代码来源:blas3-wrapper.c
示例13: ldrb_inst
void ldrb_inst(int inst, ARMProc *proc) {
int i;
int address;
int (*func)(int, ARMProc *);
int rd;
int data;
int **rd_ptr;
if(!check_condition(proc, inst))
return;
ls_addr_modes = ls_addressing_dict();
rd = getbits(inst, 12, 4);
rd_ptr = &proc->r0;
rd_ptr += rd;
for(i = 0; i < LS_ADDRESSING_NUMBER; i++) {
if(test_inst(ls_addr_modes[i], inst)) {
func = ls_addr_modes[i]->execute;
address = (*func)(inst, proc);
break;
}
}
data = read_mem(proc, address, 1);
**rd_ptr = data;
}
开发者ID:iamedu,项目名称:armdev,代码行数:28,代码来源:ldstr.c
示例14: ldr_inst
void ldr_inst(int inst, ARMProc *proc) {
int i;
int address;
int rd;
int **rd_ptr;
int (*func)(int, ARMProc *);
int data;
if(!check_condition(proc, inst))
return;
ls_addr_modes = ls_addressing_dict();
for(i = 0; i < LS_ADDRESSING_NUMBER; i++) {
if(test_inst(ls_addr_modes[i], inst)) {
printf("Addressing mode: %d\n", i);
func = ls_addr_modes[i]->execute;
address = (*func)(inst, proc);
break;
}
}
rd = getbits(inst, 12, 4);
rd_ptr = &proc->r0;
rd_ptr += rd;
data = read_mem(proc, address, 4);
if(rd == 15) {
**rd_ptr = data & 0xfffffffe;
} else {
**rd_ptr = data;
}
}
开发者ID:iamedu,项目名称:armdev,代码行数:34,代码来源:ldstr.c
示例15: breakpoint
void breakpoint(mach_vm_address_t addr) {
// Set the breakpoint to the given address
//addr = (mach_vm_address_t)0x0000000100000ea0;
//addr = vm_map_trunc_page(0x0000000100000ea0UL);// / 8;
//addr = vm_map_trunc_page(0x00000001);// / 8;
addr = vm_map_trunc_page(0x7fff5e8a6c08);// / 8;
//(mach_vm_address_t)0; //0x00000ea0;
//00 00 00 01 00 00 0e a0
//a0 0e 00 00 01 00 00 00
std::cerr << "Breaking at " << std::hex << (intptr_t)addr << std::dec << std::endl;
//char* trap = new char[PAGE_SIZE];
// trap[0] = char(0xcd);
// trap[1] = char(0x80);
// trap[2] = char(0xcc);
// trap[3] = 0x00;
// char* backup = new char[PAGE_SIZE];
mach_vm_address_t trap = 0;
mach_vm_address_t backup = 0;
error(mach_vm_allocate(mach_task_self(), &trap, PAGE_SIZE, VM_FLAGS_ANYWHERE));
error(mach_vm_allocate(mach_task_self(), &backup, PAGE_SIZE, VM_FLAGS_ANYWHERE));
read_mem(addr, backup, PAGE_SIZE);
write_mem(addr, trap, PAGE_SIZE);
// Set up the breakpoint by replacing it with an INT instruction
}
开发者ID:mfichman,项目名称:jogo,代码行数:28,代码来源:Debugger.cpp
示例16: replay_rt_sigaction
int SCOPE
replay_rt_sigaction(const struct syscall_regs * regs)
{
int32_t eax = read_int32();
if (eax == 0) {
int sigsetsize = read_int32();
ASSERT(sigsetsize == regs->esi, regs, "");
ASSERT(sigsetsize == sizeof(k_sigset_t), regs, "[email protected]@#1\n");
uintptr_t oact = read_uint32();
ASSERT(oact == regs->edx, regs, "oact inconsistent: 0x%x != 0x%x\n",
regs->edx, oact);
uintptr_t act = read_uint32();
ASSERT(act == regs->ecx, regs, "act inconsistent: 0x%x != 0x%x\n",
regs->ecx, act);
if (oact != 0)
read_mem(oact, sizeof(struct k_sigaction));
/* we need trace sighandler even in replay */
if (act != 0)
__dup_mem(&state_vector.sigactions[regs->ebx], act,
sizeof(struct k_sigaction));
}
return eax;
}
开发者ID:pi3orama,项目名称:currf2,代码行数:27,代码来源:rt_sigaction.c
示例17: get_next_line
int get_next_line(int const fd, char **line)
{
static t_list *lst = NULL;
t_mem *mem;
int ret;
char *buf;
if (!line || !(BUFF_SIZE > 0) || !(mem = get_mem(fd, &lst)))
return (-1);
if (!(ret = read_mem(mem, line)))
{
if (!(buf = ft_strnew(BUFF_SIZE)))
return (-1);
while ((ret = read(fd, buf, BUFF_SIZE)))
{
if (ret < 0)
return (free_str_return(buf, -1));
buf[ret] = '\0';
if ((ret = read_buf(buf, mem, line)))
return (free_str_return(buf, ret));
}
if (**line)
return (free_str_return(buf, 1));
return (free_str_return(buf, 0));
}
return (ret);
}
开发者ID:NSSX,项目名称:PPPPPPP,代码行数:27,代码来源:get_next_line.c
示例18: remote_access_raw_mem
static int
remote_access_raw_mem (unw_addr_space_t as, unw_word_t addr,
void* buf, size_t size, int write, void *arg)
{
Debug (3, "called, addr 0x%lx, size %lu\n", (long) addr, (long) size);
unw_fuchsia_info_t* cxt = arg;
zx_handle_t process = cxt->process;
if (write)
{
Debug (3, "writing to mem\n");
return -UNW_EINVAL;
}
zx_status_t status = read_mem (process, addr, buf, size);
if (status < 0)
{
Debug (3, "read failed: %d\n", status);
return -UNW_EINVAL;
}
char dump[3 * 8 + 1];
size_t to_dump = 8;
if (size < 8)
to_dump = size;
fill_hex (dump, sizeof(dump), buf, to_dump);
Debug (3, "returning 0, val %s%s\n", dump, to_dump < size ? " ..." : "");
return 0;
}
开发者ID:saltstar,项目名称:smartnix,代码行数:26,代码来源:fuchsia.c
示例19: init_module
/* Initialize the module - Register the character device */
int init_module(void) {
int ret_val;
char buffer[256];
/* Register the character device */
ret_val = register_chrdev(MAJOR_NUM, DEVICE_NAME, &Fops);
if (ret_val < 0) {
printk(KERN_ALERT "%s failed with %d\n",
"Sorry, registering the character device ", ret_val);
return ret_val;
}
printk(KERN_INFO "%s The major device number is %d.\n",
"Registration is a success", MAJOR_NUM);
buddy_allocator = start_balloc(MEM_SIZE);
if(!buddy_allocator) printk("ERROR: bud allocator was not allocated\n");
// custom print fcn that prints all leaf nodes (mem blocks) in the allocator
printb(buddy_allocator);
// FROM LAB DESCRIPTION (init test)
ref = get_mem(buddy_allocator, 100);
sprintf(buffer, "Hello buddy\n");
write_mem(&buddy_allocator, ref, buffer);
read_mem(buddy_allocator, ref+3, buffer, 10);
printk("init module (allocator) test buffer: %s\n", buffer); // buffer: lo buddy
readDone = false;
//free_mem(&buddy_allocator, ref);
return 0;
}
开发者ID:kmfarley11,项目名称:OS-Fall2015-UC,代码行数:32,代码来源:budsys.c
示例20: prep_injection
static int prep_injection(void)
{
/* enabled(=madvise) in /sys/kernel/mm/transparent_hugepage/. */
if (request_thp_with_madvise((unsigned long)mem_addr) < 0) {
print_err("Failed to request THP for [madvise] in enabled.\n");
return THP_FAILURE;
}
write_mem(mem_addr, REQ_MEM_SIZE);
if (read_mem(mem_addr, REQ_MEM_SIZE, 0) < 0) {
print_err("Data is Mismatched(prep_injection).\n");
return THP_FAILURE;
}
/* find the address of THP. */
thp_addr = find_thp_addr((unsigned long)mem_addr, REQ_MEM_SIZE);
if (!thp_addr) {
print_err("No THP mapped.\n");
return THP_FAILURE;
}
/* Calculate the address of the page which will be poisoned */
if (corrupt_page < 0)
corrupt_page = 0;
corrupt_page_addr = (char *)(thp_addr + corrupt_page * DEFAULT_PS);
/* Process will be killed here by kernel(SIGBUS AO). */
prctl(PR_MCE_KILL, PR_MCE_KILL_SET,
early_kill ? PR_MCE_KILL_EARLY : PR_MCE_KILL_LATE,
NULL, NULL);
return THP_SUCCESS;
}
开发者ID:Naoya-Horiguchi,项目名称:mce-test,代码行数:34,代码来源:ttranshuge.c
注:本文中的read_mem函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论