Function report |
Source Code:arch\x86\kernel\apm_32.c |
Create Date:2022-07-28 08:22:53 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:Just start the APM thread. We do NOT want to do APM BIOS* calls from anything but the APM thread, if for no other reason* than the fact that we don't trust the APM BIOS. This way,* most common APM BIOS problems that lead to protection errors
Proto:static int __init apm_init(void)
Type:int
Parameter:Nothing
| 2259 | If version == 0 || machine_is_olpc() Then |
| 2260 | printk(formational "apm: BIOS not found.\n") |
| 2261 | Return -ENODEV |
| 2263 | printk(formational "apm: BIOS version %d.%d Flags 0x%02x (Driver version %s)\n", ((version >> 8) & 0xff), (version & 0xff), flags, spaces ) |
| 2269 | If (flags & APM_32_BIT_SUPPORT) == 0 Then |
| 2270 | printk(formational "apm: no 32 bit BIOS support\n") |
| 2271 | Return -ENODEV |
| 2274 | If allow_ints Then allow_ints = 1 |
| 2276 | If broken_psr Then get_power_status_broken = 1 |
| 2278 | If realmode_power_off Then realmode_power_off = 1 |
| 2281 | If apm_disabled != -1 Then disabled = apm_disabled |
| 2292 | If version < 0x102 Then cseg_16_len = 0 |
| 2295 | If debug Then |
| 2303 | If version > 0x101 Then printk(" cseg16 len %x", cseg_16_len) |
| 2305 | printk("\n") |
| 2308 | If disabled Then |
| 2312 | If num_online_cpus() > 1 && Not power_off && Not smp Then |
| 2317 | If Not acpi_disabled Then |
| 2340 | gdt = Provide the original GDT |
| 2341 | set_desc_base( & gdt[APM_CS >> 3], (unsignedlong)__va((unsignedlong)cseg << 4)) |
| 2343 | set_desc_base( & gdt[APM_CS_16 >> 3], (unsignedlong)__va((unsignedlong)cseg_16 << 4)) |
| 2345 | set_desc_base( & gdt[APM_DS >> 3], (unsignedlong)__va((unsignedlong)dseg << 4)) |
| 2348 | proc_create_single("apm", 0, NULL, proc_apm_show) |
| 2350 | kapmd_task = Create kernel thread(apm, NULL, "kapmd") |
| 2351 | If IS_ERR(kapmd_task) Then |
| 2352 | pr_err("disabled - Unable to start kernel thread\n") |
| 2353 | err = PTR_ERR(kapmd_task) |
| 2354 | kapmd_task = NULL |
| 2355 | remove_proc_entry("apm", NULL) |
| 2356 | Return err |
| 2358 | wake_up_process(kapmd_task) |
| 2360 | If num_online_cpus() > 1 && Not smp Then |
| 2361 | printk(rmal but significant condition "apm: disabled - APM is not SMP safe (power off active).\n") |
| 2363 | Return 0 |
| 2371 | If register a miscellaneous device Then printk(warning conditions "apm: Could not register misc device.\n") |
| 2374 | If HZ != 100 Then idle_period = idle_period * HZ / 100 |
| 2376 | If idle_threshold < 100 Then |
| 2377 | cpuidle_poll_state_init( & apm_idle_driver) |
| 2378 | If Not cpuidle_register_driver( & apm_idle_driver) Then If cpuidle_register_device( & apm_cpuidle_device) Then |
| 2380 | cpuidle_unregister_driver( & apm_idle_driver) |
| 2383 | Return 0 |
| Source code conversion tool public plug-in interface | X |
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |