函数逻辑报告 | 
Source Code:arch\x86\kernel\apic\io_apic.c | 
Create Date:2022-07-27 09:29:57 | 
| Last Modify:2020-03-16 21:24:45 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:This code may look a bit paranoid, but it's supposed to cooperate with* a wide range of boards and BIOS bugs. Fortunately only the timer IRQ* is so screwy. Thanks to Brian Perkins for testing/hacking this beast* fanatically on his truly buggy board.
函数原型:static inline void __init check_timer(void)
返回类型:void
参数:无
| 2128 | irq_data等于irq_get_irq_data(0) | 
| 2129 | data等于和中断控制器相关的私有数据 | 
| 2131 | node等于cpu_to_node(0) | 
| 2134 | no_pin1等于0 | 
| 2136 | 如果非HPET replaces the PIT, when enabled. So we need to know, which of* the two timers is used则返回 | 
| 2139 | local_irq_save(flags) | 
| 2144 | mask(0) | 
| 2155 | apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT) | 
| 2156 | init(1) | 
| 2159 | apic1等于find_isa_irq_apic(0, mp_INT) | 
| 2163 | Define the default level of output to be very little* This can be turned up by using apic=verbose for more* information and apic=debug for _lots_ of information.* apic_verbosity is defined in apic.c(Debugging macros, formational "..TIMER: vector=0x%02X apic1=%d pin1=%d apic2=%d pin2=%d\n", vector, apic1, pin1, apic2, pin2) | 
| 2174 | 如果pin1恒等于负1则 | 
| 2175 | panic_if_irq_remap("BIOS bug: timer not connected to IO-APIC") | 
| 2178 | no_pin1等于1 | 
| 2179 | 否则如果pin2恒等于负1则 | 
| 2184 | 如果pin1不等于负1则 | 
| 2186 | 如果no_pin1则 | 
| 2187 | mp_alloc_timer_irq(apic1, pin1) | 
| 2188 | 否则 | 
| 2196 | 如果idx不等于负1且irq_trigger(idx)则unmask_ioapic_irq(irq_get_irq_data(0)) | 
| 2200 | irq_domain_activate_irq(irq_data, false) | 
| 2202 | 如果disable_timer_pin_1大于0则clear_IO_APIC_pin(0, pin1) | 
| 2204 | 转到:out | 
| 2206 | panic_if_irq_remap("timer doesn't work through Interrupt-remapped IO-APIC") | 
| 2207 | 禁止中断() | 
| 2208 | clear_IO_APIC_pin(apic1, pin1) | 
| 2209 | 如果非no_pin1则Define the default level of output to be very little* This can be turned up by using apic=verbose for more* information and apic=debug for _lots_ of information.* apic_verbosity is defined in apic.c(Debugging macros, r conditions "..MP-BIOS bug: 8254 timer not connected to IO-APIC\n") | 
| 2213 | Define the default level of output to be very little* This can be turned up by using apic=verbose for more* information and apic=debug for _lots_ of information.* apic_verbosity is defined in apic.c(Debugging macros, formational "...trying to set up timer (IRQ0) through the 8259A ...\n") | 
| 2222 | irq_domain_activate_irq(irq_data, false) | 
| 2223 | unmask(0) | 
| 2226 | 转到:out | 
| 2231 | 禁止中断() | 
| 2232 | mask(0) | 
| 2233 | clear_IO_APIC_pin(apic2, pin2) | 
| 2237 | Define the default level of output to be very little* This can be turned up by using apic=verbose for more* information and apic=debug for _lots_ of information.* apic_verbosity is defined in apic.c(Debugging macros, formational "...trying to set up timer as Virtual Wire IRQ...\n") | 
| 2240 | lapic_register_intr(0) | 
| 2241 | apic_write(APIC_LVT0, APIC_DM_FIXED | vector) | 
| 2242 | unmask(0) | 
| 2246 | 转到:out | 
| 2248 | 禁止中断() | 
| 2249 | mask(0) | 
| 2250 | apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_FIXED | vector) | 
| 2256 | init(0) | 
| 2257 | make_irq(0) | 
| 2258 | apic_write(APIC_LVT0, APIC_DM_EXTINT) | 
| 2264 | 转到:out | 
| 2266 | 禁止中断() | 
| 2268 | 如果apic_is_x2apic_enabled()则Define the default level of output to be very little* This can be turned up by using apic=verbose for more* information and apic=debug for _lots_ of information.* apic_verbosity is defined in apic.c(Debugging macros, formational "Perhaps problem with the pre-enabled x2apic mode\nTry booting with x2apic and interrupt-remapping disabled in the bios.\n") | 
| 2274 | out : | 
| 2275 | local_irq_restore(flags) | 
| 名称 | 描述 | 
|---|---|
| setup_IO_APIC | 
| 源代码转换工具 开放的插件接口  | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码  |