mmap returning MAP_FAILED

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?

Reply to
Washington Ratso
Loading thread data ...

=3D

=3D 22

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

Reply to
David Schwartz

=3D

o =3D 22

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 =3D open(filename, flags, 0644);

where filename =3D "/var/lib/oprofile/samples//current/{kern}/no-vmlinux/ {dep}/{kern}/no-vmlinux/TIMER.0.0.all.all.all" where flags =3D 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

formatting link
"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.) "

Reply to
Washington Ratso

What exactly do you think mapping a zero-length file would do?

DS

Reply to
David Schwartz

=3D

=3D 22

prot=3D3 =3D> 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

Reply to
Shankar

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)
Reply to
Joe Pfeiffer

Make sure you are not logging data to a JFFS2 file system. JFFS2 does not support MMAP.

Cliff

Reply to
Cliff Brake

=3D

o =3D 22

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 ->

formatting link
le_2
formatting link

Karthik Balaguru

Karthik Balaguru

Reply to
karthikbalaguru

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.