|
version 1.11, 2000/07/19 00:25:56
|
version 1.12, 2001/03/01 09:43:16
|
|
|
|
| see new text as it's written, similar to monitoring a log file using | see new text as it's written, similar to monitoring a log file using |
| "tail -f". | "tail -f". |
| | |
| |
Version 0.30 of emlog (released March 1, 2001) should work under just |
| |
about any Linux kernel in the 2.x serie, including 2.4. |
| |
|
| emlog is free software, distributed under the GNU General Public | emlog is free software, distributed under the GNU General Public |
| License (GPL); see the file COPYING for details. | License (GPL); see the file COPYING for details. |
| | |
|
|
|
| as it is written to the device by other processes.] | as it is written to the device by other processes.] |
| ^C [use control-c, for example, to stop reading.] | ^C [use control-c, for example, to stop reading.] |
| | |
| |
Note that the first process to consume data from an emlog buffer |
| |
will remove that text from the buffer. This differs from, say, |
| |
the behavior of the 'dmesg' buffer, which may be read many times |
| |
until it scrolls off. |
| | |
| 4: Remove emlog when you're done | 4: Remove emlog when you're done |
| | |
|
|
|
| reading the data out of them. All buffers will be freed when the | reading the data out of them. All buffers will be freed when the |
| emlog kernel module is removed. | emlog kernel module is removed. |
| | |
| |
Non-blocking reads work; i.e., setting O_NONBLOCK using ioctl() will |
| |
cause an EAGAIN to be returned if there is no data ready. In |
| |
addition, the select() and poll() functions will work correctly on |
| |
emlog devices. |
| |
|
| |
|
| |
Emlog and devfs |
| |
=============== |
| |
|
| |
I love devfs and use it extensively, but I don't think it makes much |
| |
sense to use emlog with devfs. emlog lets you create as many log |
| |
devices as you like, anywhere on the filesystem -- the module tells |
| |
them apart based on their inode number. Having a single log device |
| |
always exist in a single place (/dev) is much less useful. So, I have |
| |
intentionally continued using the old register_chrdev interface |
| |
instead of using the new devfs_register_chrdev interface. |
| |
|
| | |
| Troubleshooting | Troubleshooting |
| =============== | =============== |
|
|
|
| A: If you've recently installed new kernel sources, make sure that | A: If you've recently installed new kernel sources, make sure that |
| you've run "make config" or "make menuconfig" in /usr/src/linux. You | you've run "make config" or "make menuconfig" in /usr/src/linux. You |
| don't actually have to go through the entire configuration; just make | don't actually have to go through the entire configuration; just make |
| sure that the symbolic link to your architecture-specific header files |
sure that you have a /usr/include/asm and a /usr/include/linux that |
| is created. |
are symbolic links into your kernel source tree. |
| | |
| | |
| Q: When I try to insert the module using 'insmod', I get 'I/O error'. | Q: When I try to insert the module using 'insmod', I get 'I/O error'. |
|
|
|
| A: The *minor* number of the emlog device file must be a number | A: The *minor* number of the emlog device file must be a number |
| between 1 and 128, representing the number of kilobytes (1,024 bytes) | between 1 and 128, representing the number of kilobytes (1,024 bytes) |
| that should be used for emlog's ring buffer. Make sure you're | that should be used for emlog's ring buffer. Make sure you're |
| specifying a valid minor number in your 'mknod' statement. |
specifying a valid minor number in your 'mknod' statement. Don't use |
| |
0. |
| | |
| | |
| Q: I see "no memory" errors when I try opening new emlog files. | Q: I see "no memory" errors when I try opening new emlog files. |
|
|
|
| by which processes. | by which processes. |
| | |
| | |
| |
Q: When more than one process tries to read data from an emlog device, |
| |
only one gets it. |
| |
|
| |
A: Yep, that's how it's supposed to work -- it differs from dmesg. |
| |
Unlike dmesg, emlog lets you block waiting for more input (like tail |
| |
-f). This was easier to implement by having buffers be consumed the |
| |
first time they were read. |
| |
|
| |
|
| Q: You've made my computer crash. | Q: You've made my computer crash. |
| | |
| A: Sorry. If you can reproduce the problem I'll try to fix it. | A: Sorry. If you can reproduce the problem I'll try to fix it. |
|
|
|
| filesystems happen to have the same inode number, they will share the | filesystems happen to have the same inode number, they will share the |
| same buffer, as if they were the same device file. | same buffer, as if they were the same device file. |
| | |
| Currently, the poll() function for emlog files is unimplemented. |
|
| Therefore, using the select() function with an emlog file will not |
|
| work. (However, non-blocking reads DO work, e.g. by setting |
|
| O_NONBLOCK using ioctl()). |
|
| |
|
| Bug reports, patches, complaints, praise, and submissions of Central | Bug reports, patches, complaints, praise, and submissions of Central |
| Services Form 27B/6, are welcomed by the author (Jeremy Elson, | Services Form 27B/6, are welcomed by the author (Jeremy Elson, |
| <jelson@circlemud.org>. | <jelson@circlemud.org>. |
| | |
| | |
| |
Version History |
| |
=============== |
| |
|
| |
Version 0.30 (March 1, 2000) |
| |
- Now compiles correctly for 2.4 series kernels. |
| |
- select() and poll() now work correctly on emlog devices. |
| |
- Bug fix: all instances should not share one wait queue! |
| |
|
| |
Version 0.20 (June 14, 2000) |
| |
- Initial public release. |
| |
|
| |
|
| Who wrote emlog, and why? | Who wrote emlog, and why? |
| ========================= | ========================= |
| | |