View Full Version : mmap returning MAP_FAILED
Washington Ratso
06-11-2009, 07:24 PM
I am running Linux 2.6.26 on an MPC8248. In my application, mmap is
returning MAP_FAILED. The arguments to mmap are start = 0, length =
2680, prot = 3, flags = MAP_SHARED, fd = 5, offset = 0. errno = 22
"Invalid argument"
I looked at the man page for mmap and don't see a reason why this is
happening. Any ideas?
David Schwartz
06-11-2009, 11:59 PM
On Nov 5, 9:24*pm, Washington Ratso <jobhunt...@aol.com> wrote:
> I am running Linux 2.6.26 on an MPC8248. * In my application, mmap is
> returning MAP_FAILED. *The arguments to mmap are start = 0, length =
> 2680, prot = 3, flags = MAP_SHARED, fd = 5, offset = 0. *errno = 22
> "Invalid argument"
>
> I looked at the man page for mmap and don't see a reason why this is
> happening. *Any ideas?
It would help if you told us what you were trying to do. What is file
descriptor 5 and how was it opened? Also, I doubt '2680' is a multiple
of your page size, so you cannot create a 2,680-byte mapping.
DS
Washington Ratso
07-11-2009, 04:10 PM
On Nov 6, 1:59*am, David Schwartz <dav...@webmaster.com> wrote:
> On Nov 5, 9:24*pm, Washington Ratso <jobhunt...@aol.com> wrote:
>
> > I am running Linux 2.6.26 on an MPC8248. * In my application, mmap is
> > returning MAP_FAILED. *The arguments to mmap are start = 0, length =
> > 2680, prot = 3, flags = MAP_SHARED, fd = 5, offset = 0. *errno = 22
> > "Invalid argument"
>
> > I looked at the man page for mmap and don't see a reason why this is
> > happening. *Any ideas?
>
> It would help if you told us what you were trying to do. What is file
> descriptor 5 and how was it opened? Also, I doubt '2680' is a multiple
> of your page size, so you cannot create a 2,680-byte mapping.
>
> DS
I am trying to get oprofile to work. The file I am opening is a
sample file. Here is the code for the open:
data->fd = open(filename, flags, 0644);
where filename = "/var/lib/oprofile/samples//current/{kern}/no-vmlinux/
{dep}/{kern}/no-vmlinux/TIMER.0.0.all.all.all"
where flags = O_CREAT | O_RDWR
The file /var/lib/oprofile/samples//current/{kern}/no-vmlinux/{dep}/
{kern}/no-vmlinux/TIMER.0.0.all.all.all does exist.
I changed the length to the page size and it made no difference.
According to http://www.ecst.csuchico.edu/~beej/guide/ipc/mmap.html,
"This can be any length you want. (Aside: if len not a multiple of the
virtual memory page size, you will get a blocksize that is rounded up
to that size. The extra bytes will be 0, and any changes you make to
them will not modify the file.) "
David Schwartz
07-11-2009, 05:52 PM
On Nov 6, 6:10*pm, Washington Ratso <jobhunt...@aol.com> wrote:
> I am trying to get oprofile to work. *The file I am opening is a
> sample file. *Here is the code for the open:
>
> data->fd = open(filename, flags, 0644);
>
> where filename = "/var/lib/oprofile/samples//current/{kern}/no-vmlinux/
> {dep}/{kern}/no-vmlinux/TIMER.0.0.all.all.all"
> where flags = O_CREAT | O_RDWR
>
> The file */var/lib/oprofile/samples//current/{kern}/no-vmlinux/{dep}/
> {kern}/no-vmlinux/TIMER.0.0.all.all.all does exist.
What exactly do you think mapping a zero-length file would do?
DS
Shankar
08-11-2009, 11:03 PM
On Nov 5, 9:24*pm, Washington Ratso <jobhunt...@aol.com> wrote:
> I am running Linux 2.6.26 on an MPC8248. * In my application, mmap is
> returning MAP_FAILED. *The arguments to mmap are start = 0, length =
> 2680, prot = 3, flags = MAP_SHARED, fd = 5, offset = 0. *errno = 22
> "Invalid argument"
>
> I looked at the man page for mmap and don't see a reason why this is
> happening. *Any ideas?
prot=3 => would mean PROT_READ|PROT_WRITE
MAP_SHARED I think is a invalid mode if you are trying to map it that
way, Probably you may want to remove PROT_WRITE and see whats
happening.
Thanks
Shankar Easwaran
Joe Pfeiffer
09-11-2009, 07:09 AM
Shankar <shankarke@gmail.com> writes:
> On Nov 5, 9:24*pm, Washington Ratso <jobhunt...@aol.com> wrote:
>> I am running Linux 2.6.26 on an MPC8248. * In my application, mmap is
>> returning MAP_FAILED. *The arguments to mmap are start = 0, length =
>> 2680, prot = 3, flags = MAP_SHARED, fd = 5, offset = 0. *errno = 22
>> "Invalid argument"
>>
>> I looked at the man page for mmap and don't see a reason why this is
>> happening. *Any ideas?
>
> prot=3 => would mean PROT_READ|PROT_WRITE
>
> MAP_SHARED I think is a invalid mode if you are trying to map it that
> way, Probably you may want to remove PROT_WRITE and see whats
> happening.
That would do terrible things to the utility of shared memory -- no,
MAP_SHARED and PROT_WRITE are compatible. Maybe you're thinking of
MAP_SHARED and MAP_ANONYMOUS (which didn't used to be compatible, but is
since 2.4).
--
As we enjoy great advantages from the inventions of others, we should
be glad of an opportunity to serve others by any invention of ours;
and this we should do freely and generously. (Benjamin Franklin)
Cliff Brake
10-11-2009, 05:46 AM
On Nov 6, 9:10*pm, Washington Ratso <jobhunt...@aol.com> wrote:
> I am trying to get oprofile to work. *The file I am opening is a
> sample file. *Here is the code for the open:
Make sure you are not logging data to a JFFS2 file system. JFFS2 does
not support MMAP.
Cliff
karthikbalaguru
07-12-2009, 07:24 AM
On Nov 8, 2:03*pm, Shankar <shanka...@gmail.com> wrote:
> On Nov 5, 9:24*pm, Washington Ratso <jobhunt...@aol.com> wrote:
>
> > I am running Linux 2.6.26 on an MPC8248. * In my application, mmap is
> > returning MAP_FAILED. *The arguments to mmap are start = 0, length =
> > 2680, prot = 3, flags = MAP_SHARED, fd = 5, offset = 0. *errno = 22
> > "Invalid argument"
>
> > I looked at the man page for mmap and don't see a reason why this is
> > happening. *Any ideas?
>
> prot=3 => would mean PROT_READ|PROT_WRITE
>
> MAP_SHARED I think is a invalid mode if you are trying to map it that
> way, Probably you may want to remove PROT_WRITE and see whats
> happening.
>
No. It is feasible.
The parameter prot determines whether read, write, execute,
or some combination of accesses are permitted to the data being
mapped.
The prot should be either PROT_NONE or the bitwise inclusive OR of
one or more of the other flags listed below -
PROT_READ Data can be read.
PROT_WRITE Data can be written.
PROT_EXEC Data can be executed.
PROT_NONE Data cannot be accessed.
Check the below links w.r.t mmap ->
http://docs.blackfin.uclinux.org/doku.php?id=:mmap#mmap_kernel_code_example_2
http://www.opengroup.org/onlinepubs/007908775/xsh/mmap.html
Karthik Balaguru
Karthik Balaguru
vBulletin® v3.8.3, Copyright ©2000-2010, Jelsoft Enterprises Ltd.