login
Header Space

 
 

Eus's blog

Why XHTML?

December 16, 2008 - 7:23am
Submitted by Eus on December 16, 2008 - 7:23am.

Previously, I wondered why the need of XHTML specification by W3C. Now after I was cluttering my hands with ECMA Script (i.e., JavaScript) for a while, I found the definite reason.

3x3 Sudoku Puzzle Solver

December 15, 2008 - 11:37pm
Submitted by Eus on December 15, 2008 - 11:37pm.

Back when I was in the last half part of my third semester of my undergraduate study, there was a fever among my classmates to solve Sudoku puzzles. I just tried to scratch some of those puzzles but find them not exciting because I only need to employ a trial-and-error method. Later, in the beginning of my fourth semester, I tried to find an algorithm to solve those puzzles and ended up with a method that I will describe here.

Fiddling with sys_call_table in Linux Kernel 2.6.21.5

October 14, 2008 - 6:52am
Submitted by Eus on October 14, 2008 - 6:52am.
Linux

A friend of mine would like to try to implement a new system call based on the example in Chapter 8 of Linux Kernel Module Programming Guide 2.6 Series (http://www.dirac.org/linux/writing/lkmpg/2.6/lkmpg-2.6.0.html) in Linux kernel 2.6.21.5. The example requires that the kernel exports `sys_call_table' symbol. Although Linux kernel 2.4.x, on which the guide is based, still exposes that symbol, Linux kernel 2.6.x does not do that anymore for it is harmful (e.g., it is unimaginable if a module replace the system call of `link' with `unlink' via the table). The guide comes with a patch to expose the table in Linux kernel 2.6.x. However, the patch does not work in particular for Linux kernel 2.6.21.5. So, I helped him to do so.

Computer Languages

October 4, 2008 - 10:59am
Submitted by Eus on October 4, 2008 - 10:59am.

In a book titled C How to Program by Deitel and Deitel, computer languages are classified into three types as follows:
1. machine language
2. assembly language
3. high-level language

The Development of Computers

October 4, 2008 - 10:55am
Submitted by Eus on October 4, 2008 - 10:55am.

Well, everything started with single-user batch processing system. In this system, a batch of jobs are queued to be processed by the system one at a time. The system itself is usually operated by one operator. An owner of a job has to wait for the result to be produced by the system.

Computer Subsystems - How Important I/O Is

October 4, 2008 - 10:53am
Submitted by Eus on October 4, 2008 - 10:53am.

I believe every new student studying Computer Science or Information Technology will be introduced to the sub-systems of computers, which are Input Unit, Output Unit, Arithmetic and Logic Unit, Central Processing Unit, Storage Unit (Primary Storage Unit/Main Memory and Secondary Storage Unit). I always thought that the most amazing part of a computer was its processor (i.e., ALU and CPU).

Yahoo!'s Spam Filter Broke

October 4, 2008 - 10:49am
Submitted by Eus on October 4, 2008 - 10:49am.

I have my e-mail forwarding set up in FSF's mail server to my account in Yahoo!'s mail server.

I tune into several mailing lists, and I noticed that frequently the e-mails came out-of-order if not delivered at all.

How does the IPv4 Receiving Mechanism Assemble Fragmented Datagrams?

October 4, 2008 - 10:26am
Submitted by Eus on October 4, 2008 - 10:26am.
Linux

How does the IP receiving mechanism assemble fragmented datagrams?

First of all, this writing is based on Linux kernel 2.6.21.5.

When I looked into ip_frag_reasm() that was commented with /* Build a new IP datagram from all its fragments. */ in net/ipv4/ip_fragment.c, I could not find the code that I had looked for, specifically, the code to construct a new big SKB and copy all data fragments in the received SKBs into the new big SKB. Of course, if I had found what I had looked for, it would have meant that ip_frag_reasm() was so inefficient (i.e., dumb). Instead, ip_frag_reasm() only prepared the chain of the SKBs to be processed by skb_copy_datagram_iovec() as I have described here.

Information On skb_copy_datagram_iovec().txt

October 3, 2008 - 3:01am
Submitted by Eus on October 3, 2008 - 3:01am.
Linux

Information on skb_copy_datagram_iovec()

This writing is based on Linux kernel 2.6.21.5.

This function is defined in net/core/datagram.c. The main task of this function is to copy the data of an skb in the kernel-space to a memory location in the user-space. Usually, this function will be the one who finally satisfies recvmsg() system call and its variants, which are recv() and recvfrom(). Nevertheless, this main task also carries one unique responsibility: taking care of fragmentation.

The Crisp Boundary between HardIRQ-context, SoftIRQ-context, and User-context

October 3, 2008 - 2:56am
Submitted by Eus on October 3, 2008 - 2:56am.
Linux

As mentioned in Rusty's Unreliable Guide to Kernel Locking, the Linux kernel has three contexts of thread executions: hard-IRQ context, soft-IRQ context, and user/process-context. As on July 10, 2008, the guide does not mention anything about the boundaries between those contexts. So, I studied the source code of Linux kernel 2.6.21.5. From my study, it is clear that the boundaries are queues. It represents the classical IPC problem: the Producer-Consumer Problem.

Tuning to a New Unusual Multicast Address

September 27, 2008 - 11:52pm
Submitted by Eus on September 27, 2008 - 11:52pm.
Linux

During my work on the ATN TP4/CLNP Networking Suite, I helped a friend of mine to be able to capture Ethernet frames destined to unusual Ethernet multicast addresses. What I mean by unusual is that it is not the common IANA's range for multicast addresses, which is from 01-00-5e-00-00-00 to 01-00-5e-ff-ff-ff.

Changing the Default Orientation of a JPEG-EXIF File.txt

July 28, 2008 - 8:30am
Submitted by Eus on July 28, 2008 - 8:30am.

When browsing a bunch of pictures with Kuickshow, I always saw that all pictures were correctly oriented for display. The pictures that were taken by rotating the camera 90 degrees from its natural position were displayed by Kuickshow in the right orientation so that I did not have to re-orient the pictures manually.

How to Start Hacking the Linux Kernel

June 20, 2008 - 3:54am
Submitted by Eus on June 20, 2008 - 3:54am.
Linux

Someone posted such a question here.

Personally, I started to hack the Linux kernel when developing a new networking suite called the ATN TP4/CLNP Networking Suite for use with GNU/Linux systems in the aeronautical industry. So, I have some suggestions here.

What does SOCK_ZAPPED mean?

June 13, 2008 - 12:38am
Submitted by Eus on June 13, 2008 - 12:38am.
Linux

SOCK_ZAPPED, which is defined in include/net/sock.h, is a status flag of a socket (struct sock) to indicate that the socket has a name assigned to it already (i.e., the socket is bound with bind()).

Archive: Linux Kernel's Networking Part (Networking Socket)

What Kind of Ethernet MAC Addresses are These?

June 11, 2008 - 2:47pm
Submitted by Eus on June 11, 2008 - 2:47pm.
Linux

It turned out that any wireless Ethernet card's device driver in a non-promiscuous mode does not drop any Ethernet frame with the following destination MAC address:
YY:xx:xx:xx:xx:xx, where YY is an odd number (e.g., 0xE1, 0x11, 0x01, etc.)

speck-geostationary