Mercurial > ecos
comparison packages/kernel/current/cdl/interrupts.cdl @ 76:435cced73e2f ecos-v1_3_1-release
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
| author | jlarmour |
|---|---|
| date | Tue, 28 Mar 2000 14:10:45 +0000 |
| parents | |
| children | 6736c52df507 |
comparison
equal
deleted
inserted
replaced
| 75:41bf073c0c32 | 76:435cced73e2f |
|---|---|
| 1 # ==================================================================== | |
| 2 # | |
| 3 # interrupts.cdl | |
| 4 # | |
| 5 # configuration data related to kernel interrupt handling | |
| 6 # | |
| 7 # ==================================================================== | |
| 8 #####COPYRIGHTBEGIN#### | |
| 9 # | |
| 10 # ------------------------------------------- | |
| 11 # The contents of this file are subject to the Red Hat eCos Public License | |
| 12 # Version 1.1 (the "License"); you may not use this file except in | |
| 13 # compliance with the License. You may obtain a copy of the License at | |
| 14 # http://www.redhat.com/ | |
| 15 # | |
| 16 # Software distributed under the License is distributed on an "AS IS" | |
| 17 # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the | |
| 18 # License for the specific language governing rights and limitations under | |
| 19 # the License. | |
| 20 # | |
| 21 # The Original Code is eCos - Embedded Configurable Operating System, | |
| 22 # released September 30, 1998. | |
| 23 # | |
| 24 # The Initial Developer of the Original Code is Red Hat. | |
| 25 # Portions created by Red Hat are | |
| 26 # Copyright (C) 1998, 1999, 2000 Red Hat, Inc. | |
| 27 # All Rights Reserved. | |
| 28 # ------------------------------------------- | |
| 29 # | |
| 30 #####COPYRIGHTEND#### | |
| 31 # ==================================================================== | |
| 32 ######DESCRIPTIONBEGIN#### | |
| 33 # | |
| 34 # Author(s): bartv | |
| 35 # Original data: nickg | |
| 36 # Contributors: | |
| 37 # Date: 1999-06-13 | |
| 38 # | |
| 39 #####DESCRIPTIONEND#### | |
| 40 # | |
| 41 # ==================================================================== | |
| 42 | |
| 43 # NOTE: the choice of list vs table should not be two separate | |
| 44 # options. There is a single option which must have one of | |
| 45 # two legal values. | |
| 46 cdl_component CYGIMP_KERNEL_INTERRUPTS_DSRS { | |
| 47 display "Use delayed service routines (DSRs)" | |
| 48 default_value 1 | |
| 49 description " | |
| 50 In eCos the recommended way to handle device interrupts is to | |
| 51 do a minimum amount of work inside the low level interrupt | |
| 52 handler itself, and instead do as much as possible in a | |
| 53 Delayed Service Routine or DSR. If an application does not | |
| 54 make use of DSRs directly or indirectly then it is possible | |
| 55 to disable the DSR support completely, which reduces the | |
| 56 overheads of context switches and interrupt handling. Note | |
| 57 that the kernel real-time clock makes use of DSRs, as do many | |
| 58 of the device drivers. " | |
| 59 | |
| 60 cdl_interface CYGINT_KERNEL_INTERRUPTS_DSRS { | |
| 61 requires 1 == CYGINT_KERNEL_INTERRUPTS_DSRS | |
| 62 } | |
| 63 | |
| 64 # NOTE: the choice of list vs table should not be two separate | |
| 65 # options. There is a single option which must have one of | |
| 66 # two legal values. | |
| 67 cdl_option CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST { | |
| 68 display "Use linked lists for DSRs" | |
| 69 default_value 1 | |
| 70 implements CYGINT_KERNEL_INTERRUPTS_DSRS | |
| 71 description " | |
| 72 When DSR support is enabled the kernel must keep track of all | |
| 73 the DSRs that are pending. This information can be kept in a | |
| 74 fixed-size table or in a linked list. The list implementation | |
| 75 requires that the kernel disable interrupts for a very short | |
| 76 period of time outside interrupt handlers, but there is no | |
| 77 possibility of a table overflow occurring." | |
| 78 } | |
| 79 | |
| 80 cdl_component CYGIMP_KERNEL_INTERRUPTS_DSRS_TABLE { | |
| 81 display "Use fixed-size table for DSRs" | |
| 82 default_value 0 | |
| 83 implements CYGINT_KERNEL_INTERRUPTS_DSRS | |
| 84 description " | |
| 85 When DSR support is enabled the kernel must keep track of all | |
| 86 the DSRs that are pending. This information can be kept in a | |
| 87 fixed-size table or in a linked list. The table | |
| 88 implementation involves a very small risk of overflow at | |
| 89 run-time if a given interrupt source is able to have more | |
| 90 than one pending DSR. However it has the advantage that | |
| 91 the kernel does not need to disable interrupts outside | |
| 92 interrupt handlers." | |
| 93 | |
| 94 cdl_option CYGNUM_KERNEL_INTERRUPTS_DSRS_TABLE_SIZE { | |
| 95 display "Number of entries in fixed-size DSR table" | |
| 96 flavor data | |
| 97 legal_values 2 to 1024 | |
| 98 default_value 32 | |
| 99 description " | |
| 100 When DSR support is enabled the kernel must keep track of all | |
| 101 the DSRs that are pending. One approach involves a fixed-size | |
| 102 table, which involves a very small risk of overflow at | |
| 103 run-time. By increasing the table size it is possible to reduce | |
| 104 this risk." | |
| 105 } | |
| 106 } | |
| 107 | |
| 108 cdl_option CYGIMP_KERNEL_INTERRUPTS_CHAIN { | |
| 109 display "Chain all interrupts together" | |
| 110 requires CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN | |
| 111 default_value 0 | |
| 112 description " | |
| 113 Interrupts can be attached to vectors either singly, or be | |
| 114 chained together. The latter is necessary if there is no way | |
| 115 of discovering which device has interrupted without | |
| 116 inspecting the device itself. It can also reduce the amount | |
| 117 of RAM needed for interrupt decoding tables and code." | |
| 118 } | |
| 119 } |
