Annotation of driverkit/doc/OLD_NRW/InterruptAPI, revision 1.1.1.1

1.1       root        1: {\rtf0\ansi{\fonttbl\f0\fmodern Ohlfs;\f1\fswiss Helvetica;}
                      2: \paperw13040
                      3: \paperh10200
                      4: \margl120
                      5: \margr120
                      6: {\colortbl\red0\green0\blue0;}
                      7: \pard\tx1140\tx2300\tx3440\tx4600\tx5760\tx6900\tx8060\tx9200\tx10360\tx11520\f0\b0\i0\ul0\fs24 Here's a proposal for an interface between the NRW DMA module (which I'm writing) and the interrupt module. Note that there is no access checking a la dev_port or the device_master port; these functions are only used by the kernel's DMA module. \
                      8: \
                      9: 
                     10: \pard\tx1040\tx2100\tx3160\tx4220\tx5280\tx6320\tx7380\tx8440\tx9500\tx10560\f1        
                     11: \b kern_return_t
                     12: \b0 \
                     13:        
                     14: \b kern_intr_map(\
                     15:                dev_num_t *
                     16: \b0 global_dev_num,
                     17: \b \
                     18:                kern_port_t 
                     19: \b0 intr_port
                     20: \b );\
                     21:        
                     22: \b0 \
                     23:                
                     24: \b kern_intr_map
                     25: \b0\i  
                     26: \i0 causes interrupts detected for device global_dev_num to be \
                     27:                dispatched to 
                     28: \i intr_port
                     29: \i0 .\
                     30:                
                     31: \pard\tx1140\tx2300\tx3440\tx4600\tx5760\tx6900\tx8060\tx9200\tx10360\tx11520 \
                     32: 
                     33: \pard\tx1040\tx2100\tx3160\tx4220\tx5280\tx6320\tx7380\tx8440\tx9500\tx10560   
                     34: \b kern_return_t
                     35: \b0 \
                     36:        
                     37: \b kern_intr_unmap(\
                     38: 
                     39: \b0\i          
                     40: \b\i0 dev_num_t
                     41: \b0\i  
                     42: \i0 global_dev_num
                     43: \b );\
                     44:        
                     45: \b0 \
                     46:                
                     47: \b kern_intr_unmap
                     48: \b0\i  
                     49: \i0 causes the interrupt-to-port mapping established in \
                     50:                kern_intr_map() to be deleted.\
                     51:                \
                     52:                Returns 
                     53: \pard\tx1140\tx2300\tx3440\tx4600\tx5760\tx6900\tx8060\tx9200\tx10360\tx11520\fc0 KERN_NO_ACCESS
                     54: \pard\tx1040\tx2100\tx3160\tx4220\tx5280\tx6320\tx7380\tx8440\tx9500\tx10560\fc0  if 
                     55: \i global_dev_num
                     56: \i0  currently has no valid mapping,\
                     57:                else returns KERN_SUCCESS. \
                     58: 
                     59: \pard\tx1140\tx2300\tx3440\tx4600\tx5760\tx6900\tx8060\tx9200\tx10360\tx11520 \
                     60: 
                     61: \pard\tx1040\tx2100\tx3160\tx4220\tx5280\tx6320\tx7380\tx8440\tx9500\tx10560   
                     62: \b kern_return_t
                     63: \b0 \
                     64:        
                     65: \b kern_intr_enable(\
                     66: 
                     67: \b0\i          
                     68: \b\i0 dev_num_t
                     69: \b0\i  
                     70: \i0 global_dev_num
                     71: \b );\
                     72:        
                     73: \b0 \
                     74:                
                     75: \b kern_intr_enable
                     76: \b0\i  
                     77: \i0 causes interrupts from 
                     78: \i global_dev_num
                     79: \i0  to be enabled. To\
                     80:                enable interrupts for a given global_dev_num, the device's bit in IACTIVE must be\
                     81:                cleared. <What about the device's bit in the two IACCEPT registers?>\
                     82:                \
                     83:                Returns 
                     84: \pard\tx1140\tx2300\tx3440\tx4600\tx5760\tx6900\tx8060\tx9200\tx10360\tx11520\fc0 KERN_NO_ACCESS
                     85: \pard\tx1040\tx2100\tx3160\tx4220\tx5280\tx6320\tx7380\tx8440\tx9500\tx10560\fc0  if 
                     86: \i global_dev_num
                     87: \i0  currently has no valid mapping,\
                     88:                else returns KERN_SUCCESS. \
                     89:                \
                     90:        
                     91: \b kern_return_t
                     92: \b0 \
                     93:        
                     94: \b kern_intr_disable(\
                     95: 
                     96: \b0\i          
                     97: \b\i0 dev_num_t
                     98: \b0\i  
                     99: \i0 global_dev_num
                    100: \b );\
                    101:        
                    102: \b0 \
                    103:                
                    104: \b kern_intr_disable
                    105: \b0\i  
                    106: \i0 causes interrupts from 
                    107: \i global_dev_num
                    108: \i0  to be disabled.  \
                    109:                <What happends here - is this device's bit in both IACCEPT registers cleared?>\
                    110:                                \
                    111:                Returns 
                    112: \pard\tx1140\tx2300\tx3440\tx4600\tx5760\tx6900\tx8060\tx9200\tx10360\tx11520\fc0 KERN_NO_ACCESS
                    113: \pard\tx1040\tx2100\tx3160\tx4220\tx5280\tx6320\tx7380\tx8440\tx9500\tx10560\fc0  if 
                    114: \i global_dev_num
                    115: \i0  currently has no valid mapping,\
                    116:                else returns KERN_SUCCESS. \
                    117: 
                    118: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.