Does it have to be a user mode piece of code? You're going to have real
trouble figuring that out if so. Could you put that small portion of code
into a kernel module and just load it from your user program to do what it
needs to?
What is it you're trying to do that shouldn't be interrupted?
} I need to disable interrupts for a short time from a user program on
} RPX/Lite. This needs to be done only once, but it's absolutely essential
} that the program is not interrupted during a certain period of time.
}
} Using the __cli() function from the kernel sources in a user-space program
} doesn't work. The first instruction "mfmsr %r0" (Get current interrupt
} state) causes SIGILL.
}
} Probably I could hack the kernel to make processes with very high priority
} uninterruptible.
}
} I'm quite sure that the problem is not new. Anybody has a better idea?
}
} Pavel Roskin
}
}
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Hello, Cort!
Does it have to be a user mode piece of code? You're going to have real
trouble figuring that out if so. Could you put that small portion of code
into a kernel module and just load it from your user program to do what it
needs to?
Well, this code needs to read some data continously. Then the data must
be processed and written to a file.
If you expect problems, I could create a new syscall and pass a buffer to
it. Probably this should be Ok. But the buffer can be huge (comparable
with the RAM size), so I would like to avoid copying data. This means that
the kernel needs to write to the userspace buffer directly.
Thank you for the reply.
Regards,
Pavel Roskin
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Why don't you just use DMA? Have a couple of buffers and flip between
them writing the data to disk while the DMA controller handles the
reads. Again, this will mean writing a module.
Greg.
Quoth Pavel Roskin:
quoted
Does it have to be a user mode piece of code? You're going to have real
trouble figuring that out if so. Could you put that small portion of code
into a kernel module and just load it from your user program to do what it
needs to?
Well, this code needs to read some data continously. Then the data must
be processed and written to a file.
If you expect problems, I could create a new syscall and pass a buffer to
it. Probably this should be Ok. But the buffer can be huge (comparable
with the RAM size), so I would like to avoid copying data. This means that
the kernel needs to write to the userspace buffer directly.
--
+----------------------------------------------------+
| Do you want to know more? |
| --== Greg Johnson ==-- |
| HW/SW Engineer gjohnson@research.canon.com.au |
| Canon Information Systems Research Australia |
| 1 Thomas Holt Dr, North Ryde, NSW, 2113, Australia |
| "I FLEXed my BISON and it went YACC!" - me. |
+----------------------------------------------------+
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/