home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / NOVELL / PKTDRV7.ZIP / 8259.NOT / text0002.txt < prev   
Encoding:
Text File  |  1990-07-26  |  1.5 KB  |  34 lines

  1. ddl@das.harvard.edu (Dan Lanciani) writes:
  2. >         Do you have a little demo program I can rty on machines?
  3.  
  4. Unfortunately, no I don't.  Producing the bug took a lot of effort
  5. including 1 machine (a router) with two interfaces and two other
  6. machines pinging each other through the first.  To generate enough
  7. traffic, the first machine had a packet exploder which generated 50
  8. packets for every one going through it.
  9.  
  10. I certainly believe that it should be possible to write a much simpler
  11. program to generate the bug, but I definitely don't have time to try
  12. it...  I guess what I would do is write a program that would:
  13.  
  14. 1.  Initialize a "reentered" variable to zero.
  15. 2.  Cause some device to generate an interrupt.
  16. 3.  Have the interrupt handler check the "reentered" variable.  If it
  17.     is equal to zero, continue to 4.  Else, goto 8.
  18. 4.  Reset the interrupt at the device.
  19. 5.  Cause the device to generate another interrupt.  4 and 5 must be
  20.     done in this order to get the interrupt controller's edge
  21.     trigger latch to be set.
  22. 6.  Reenable processor interrupts.  Do NOT reenabled interrupt
  23.     controller interrupts.  I.e. do NOT send an EOI.
  24. 7.  Wait in a infinite loop.  Higher priority (i.e. timer) interrupts
  25.     should be able to occur but interrupts from this device should not.
  26. 8.  Print "bad interrupt controller".  If you got here then a timer
  27.     interrupt fired and managed to reenable your device interrupts
  28.     by doing a Non Specific EOI to a broken interrupt controller.
  29.  
  30. Drew
  31.  
  32.  
  33.  
  34.