Ticket #18 (closed defect: invalid)

Opened 14 years ago

Last modified 14 years ago

Reading from /dev/tree kills CN kernel

Reported by: iskra Owned by: zepto team
Priority: minor Milestone:
Component: ZeptoOS Version:
Keywords: Cc:


Communication over the tree is normally polling-based: we frequently read a status register from a user space process to see if any packets have arrived. This is wasteful in case of the "control" process running on the CNs, which is supposed to be a background process that sleeps when there's nothing to do. IBM added another mode of querying the tree network: one can call read() on the open file descriptor of /dev/tree. The call will block until a packet is available.

So much for the theory. In practice, when we forked off the ZeptoOS CNK from the IBM ION sources, that support was broken, and an attempt to read() from the fd results in a kernel crash if there are no packets waiting (i.e., if the calling process should be put to sleep).

IBM has since fixed the problem in the ION kernel. I diffed the tree driver sources between broken and fixed kernels and I seem to remember that they were identical, so the fix must be someplace else, but the complete kernel diff was large due to many unrelated changes. So the fix needs to be identified and ported from the current IBM ION to our ZeptoOS CN kernel.

Change History

comment:1 Changed 14 years ago by iskra

  • Status changed from new to closed
  • Resolution set to invalid

I can no longer reproduce this bug. control process has been changed to use this mode, so if it breaks again, we will see it immediately :-).

Note: See TracTickets for help on using tickets.