Sponsored Content
Full Discussion: page fault handle
Operating Systems Linux page fault handle Post 302356849 by a2156z on Monday 28th of September 2009 04:52:05 AM
Old 09-28-2009
page fault handle

For zero-copy communication among the processor, I allocated a pool in the kernel. From user space, it may mmap the virtual memory device into user space i.e 0x80000000. the client may send a message to the server, it may request a buffer, kernel will allocate a block for it and register it into the pool. After that, the client(user space) will got an address(that has been translated into user space address) for example: it will be 0x80003ffe4, the kernel will record the offset 0x3ffe4 into pool. But during write the the user space address 0x80003ffe4, I track the memory fault handle process, I got the vmf->virtual_address - vma->start = 0x3f000, I follow the offset 0x3f000 to find the page, in fact, the offset is not right.
So, why is the offset 0x3f000 other than 0x3ffe4?

The call flow:

char *buf = ipczalloc(6); // buf = 0x80003ffe4.
memcpy(buf, "12345", 5); // will enter vma fault handle


The code as below:
static int ipcmem_vm_nopage(struct vm_area_struct* vma, struct vm_fault * vmf)
{
unsigned long offset;
offset = vmf->virtual_address - vma->start;
printk("the offset is %x.\n", offset);
}

---------- Post updated 09-28-09 at 12:52 AM ---------- Previous update was 09-27-09 at 11:23 PM ----------

I got the answer, since the kernel before do the page fault,
the vmf.virtual_address = (void __user *)(address & PAGE_MASK)


PAGE_MASK = ~(0xFFF)

From the kernel source code, there is no way to get the real user address from vm fault handler.

So, are there any better to handle that?
a2156z
 

9 More Discussions You Might Find Interesting

1. HP-UX

Data page fault

What causes 'page data fault' or 'data memory protection fault' under HP-UX 11. The server crashes and the shutdownlog reports the above error. For your info, Oracle 8i is running . Appreciate your fast response, Wobitu :confused: (2 Replies)
Discussion started by: wobitu
2 Replies

2. Solaris

Page Fault very high

Hi, We are running SUN sparc 5.8, notice frequent "Page Faults" message from our monitor s/w "ServerVantage" coming but no message display in SUN syslog or messages log. Any ideas why or what to check? thanks, Ahmad (2 Replies)
Discussion started by: Ahmad
2 Replies

3. UNIX for Advanced & Expert Users

Page fault in kernel

I have a query (Don't know whether its the right folder to ask) ................. What happens when page fault happens in Kernel ..(as the kernel mode is non-preemptive)... any guesses... Thanks in advance (2 Replies)
Discussion started by: yash0101
2 Replies

4. UNIX for Dummies Questions & Answers

Page Fault + Memory

I am not sure where to post this so i will put it in the newbie section. I have set up a bog standard debain 6, LAMP environment in the cloud. The specs 1 core at 2GH 2.5gb Memory running Jommla, with about 1.6K visitors a day. I am using AppFirst (appfirst.com) to monitor the... (2 Replies)
Discussion started by: waseem
2 Replies

5. UNIX for Dummies Questions & Answers

Difference between handle to the thread HANDLE and thread identifier pthread_t

This question might be silly but its confusing me a bit: What is the difference between handle to the thread HANDLE and thread identifier pthread_t? ---------- Post updated at 01:52 PM ---------- Previous update was at 01:48 PM ---------- Sorry I saw details and HANDLE is in windows and... (0 Replies)
Discussion started by: rupeshkp728
0 Replies

6. Web Development

Page load time- local page

Hi Is there a way to calculate the page load time, I am trying to calculate the load time of a page locally. I found tools to do this over http or https but none that work locally. Any ideas? Thanks. (4 Replies)
Discussion started by: jamie_123
4 Replies

7. Shell Programming and Scripting

Print multiple copies page by page using lp command

Hi I have a pdf file that is being generated using the rwrun command in the shell script. I then have the lp command in the shell script to print the same pdf file. Suppose there are 4 pages in the pdf file , I need to print 2 copies of the first page, 2 copies of the second page , then 2... (7 Replies)
Discussion started by: megha2525
7 Replies

8. Shell Programming and Scripting

script for adding page number before page breaks

Hi, If there is an expert that can help: I have many txt files that are produced from pdftotext that include page breaks the page breaks seem to be unix style hex 0C. I want to add page numbers before each page break as in : Page XXXX Regards antman (9 Replies)
Discussion started by: antman
9 Replies

9. Programming

Using gdb, ignore beginning segmentation fault until reproduce environment segmentation fault

I use a binary name (ie polo) it gets some parameter , so for debugging normally i do this : i wrote script for watchdog my app (polo) and check every second if it's not running then start it , the problem is , if my app , remain in state of segmentation fault for a while (ie 15 ... (6 Replies)
Discussion started by: pooyair
6 Replies
csx_Put8(9F)						   Kernel Functions for Drivers 					      csx_Put8(9F)

NAME
csx_Put8, csx_Put16, csx_Put32, csx_Put64 - write to device register SYNOPSIS
#include <sys/pccard.h> void csx_Put8(acc_handle_t handle, uint32_t offset, uint8_t value); void csx_Put16(acc_handle_t handle, uint32_t offset, uint16_t value); void csx_Put32(acc_handle_t handle, uint32_t offset, uint32_t value); void csx_Put64(acc_handle_t handle, uint32_t offset, uint64_t value); INTERFACE LEVEL
Solaris DDI Specific (Solaris DDI) PARAMETERS
handle The access handle returned from csx_RequestIO(9F), csx_RequestWindow(9F), or csx_DupHandle(9F). offset The offset in bytes from the base of the mapped resource. value The data to be written to the device. DESCRIPTION
These functions generate a write of various sizes to the mapped memory or device register. The csx_Put8(), csx_Put16(), csx_Put32(), and csx_Put64() functions write 8 bits, 16 bits, 32 bits, and 64 bits of data, respectively, to the device address represented by the handle, handle, at an offset in bytes represented by the offset, offset. Data that consists of more than one byte will automatically be translated to maintain a consistent view between the host and the device based on the encoded information in the data access handle. The translation may involve byte swapping if the host and the device have incompatible endian characteristics. CONTEXT
These functions may be called from user, kernel, or interrupt context. SEE ALSO
csx_DupHandle(9F), csx_Get8(9F), csx_GetMappedAddr(9F), csx_RepGet8(9F), csx_RepPut8(9F), csx_RequestIO(9F), csx_RequestWindow(9F) PC Card 95 Standard, PCMCIA/JEIDA SunOS 5.10 19 Jul 1996 csx_Put8(9F)
All times are GMT -4. The time now is 02:46 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy