函数逻辑报告 |
Source Code:arch\x86\kernel\cpu\mtrr\mtrr.c |
Create Date:2022-07-27 09:05:23 |
| Last Modify:2022-05-18 17:35:08 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:mtrr_add_page - Add a memory type region*@base: Physical base address of region in pages (in units of 4 kB!)*@size: Physical size of region in pages (4 kB)*@type: Type of MTRR desired*@increment: If this is true do usage counting on the region* Memory
函数原型:int mtrr_add_page(unsigned long base, unsigned long size, unsigned int type, bool increment)
返回类型:int
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| unsigned long | base | |
| unsigned long | size | |
| unsigned int | type | |
| bool | increment |
| 308 | 如果非mtrr_enabled()则返回:负ENXIO |
| 311 | error等于validate_add_page(base, size, type) |
| 315 | 如果type大于等于MTRR_NUM_TYPES则 |
| 326 | 如果非size则 |
| 331 | 如果base按位或base加size减1的值右移x86_phys_bits减PAGE_SHIFT determines the page size 位则 |
| 338 | replace等于负1 |
| 341 | get_online_cpus() |
| 344 | mutex_lock( & mtrr_mutex) |
| 345 | 以i小于num_var_ranges循环 |
| 361 | 否则如果types_compatible(type, ltype)则继续下一循环 |
| 366 | 转到:out |
| 370 | 如果types_compatible(type, ltype)则继续下一循环 |
| 372 | 打印警告信息("type mismatch for %lx000,%lx000 old: %s new: %s\n", base, size, mtrr_attrib_to_str(ltype), mtrr_attrib_to_str(type)) |
| 375 | 转到:out |
| 377 | 如果increment则mtrr_usage_table[i]先自加 |
| 380 | 转到:out |
| 383 | i等于get_free_region(base, size, replace) |
| 384 | 如果i大于等于0则 |
| 385 | set_mtrr_cpuslocked(i, base, size, type) |
| 386 | 如果此条件成立可能性大(为编译器优化)(replace < 0)则 |
| 387 | mtrr_usage_table[i]等于1 |
| 388 | 否则 |
| 389 | mtrr_usage_table[i]等于mtrr_usage_table[replace] |
| 390 | 如果increment则mtrr_usage_table[i]自加 |
| 392 | 如果此条件成立可能性小(为编译器优化)(replace != i)则 |
| 393 | set_mtrr_cpuslocked(replace, 0, 0, 0) |
| 394 | mtrr_usage_table[replace]等于0 |
| 397 | 否则 |
| 398 | 打印信息("no more MTRRs available\n") |
| 401 | out : |
| 402 | mutex_unlock( & mtrr_mutex) |
| 403 | put_online_cpus() |
| 404 | 返回:error |
| 名称 | 描述 |
|---|---|
| mtrr_add | mtrr_add - Add a memory type region*@base: Physical base address of region*@size: Physical size of region*@type: Type of MTRR desired*@increment: If this is true do usage counting on the region* Memory type region registers control the caching on newer |
| mtrr_file_add | |
| mtrr_write | seq_file can seek but we ignore it.* Format of control line:* "base=%Lx size=%Lx type=%s" or "disable=%d" |
| mtrr_ioctl |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |