函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |