`
Michaelmatrix
  • 浏览: 209652 次
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

linux内核字符串查找

 
阅读更多

/linux/lib/ts_bm.c /include/linux/textsearch.h

static unsigned int bm_find(struct ts_config *conf, struct ts_state *state)
{
struct ts_bm *bm = ts_config_priv(conf);
unsigned int i, text_len, consumed = state->offset;
const u8 *text;
int shift = bm->patlen, bs;

for (;;) {
text_len = conf->get_next_block(consumed, &text, conf, state);

if (unlikely(text_len == 0))
break;

while (shift < text_len) {
DEBUGP("Searching in position %d (%c)/n",
shift, text[shift]);
for (i = 0; i < bm->patlen; i++)
if (text[shift-i] != bm->pattern[bm->patlen-1-i])
goto next;

/* London calling... */
DEBUGP("found!/n");
return consumed += (shift-(bm->patlen-1));

next: bs = bm->bad_shift[text[shift-i]];

/* Now jumping to... */
shift = max_t(int, shift-i+bs, shift+bm->good_shift[i]);
}
consumed += text_len;
}

return UINT_MAX;
}

分享到:
评论

相关推荐

    LINUX编程白皮书 (全集)

    8.21.3 字符串型权能 299 8.22 [N]Curses函数概述 306 第9章 I/O端口编程 307 9.1 鼠标编程 307 9.2 调制解调器编程 308 9.3 打印机编程 308 9.4 游戏杆编程 308 第10章 把应用程序移植到Linux上 309 10.1 介绍 309 ...

    obnubilate:Linux内核模块,用于从魔术包中解密AES加密的有效负载

    Linux内核模块,用于从魔术包中解密AES加密的有效负载。 注册一个低级网络处理程序,以查找到达设置了某些标志的封闭端口的数据包。 当看到正确的数据包时,数据有效载荷将被提取,解密并打印到内核环形缓冲区。 ...

    Linux 内核数据结构:Radix 树

    正如你所知道的, Linux 内核通过许多不同库以及函数提供各种数据结构以及算法。这个部分我们将介绍其中一个数据结构 Radix tree。Linux 内核中有两个文件与 radix ...通常关键字是字符串,不过也可以是其他数据类型。

    spy:Linux内核模式debugfs键盘记录器

    默认情况下,它为按下的键显示人类可读的字符串。 可选地, keycode shift_mask对可以以十六进制或十进制打印。 您可以在/usr/include/linux/input-event-codes.h查找键代码。 只要加载模块,按键日志就记录在debug...

    边干边学Linux__第二版_doc格式

    3.5 显示字符串echo 3.6 命令行中使用扩展符 第4章 文件权限与文件共享 4.1 存取权限 4.2 改变文件的存取权限 4.3 特殊权限位SUID、SGID、Sticky 4.4 硬链接 4.5 符号链接 第5章 文件管理工具 5.1 正则表达式 5.2 ...

    Linux编程从入门到精通

    8.21.3 字符串型权能 299 8.22 [N]Curses函数概述 306 第9章 I/O端口编程 307 9.1 鼠标编程 307 9.2 调制解调器编程 308 9.3 打印机编程 308 9.4 游戏杆编程 308 第10章 把应用程序移植到Linux上 309 10.1 介绍 309 ...

    linux操作系统培训资料.pptx

    Linux常用操作命令 命令 功能 grep 在指定文件查找指定字符串 mv 移动文件或目录 chmod 改变文件权限指令 man 命令或函数帮助查询指令 top 查看cpu和内存使用情况的指令 ps 查看当前运行的进程的指令 pstree 查看...

    linux编程白皮书

    8.21.3 字符串型权能 299 8.22 [N]Curses函数概述 306 第9章 I/O端口编程 307 9.1 鼠标编程 307 9.2 调制解调器编程 308 9.3 打印机编程 308 9.4 游戏杆编程 308 第10章 把应用程序移植到Linux上 309 10.1 介绍 309 ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    不过目前大多数较新的Linux发行版本(包括红旗 Linux、中软Linux、Mandrake Linux等)都可以自动挂装文件系统,但Red Hat Linux除外。 umount 1.作用 umount命令的作用是卸载一个文件系统,它的使用权限是超级...

    LINUX操作系统(电子教案,参考答案)

    4.2.7 寻找指定字符或字符串 72 4.2.8 块操作 75 4.3 功能强大的Emacs 76 4.3.1 Emacs是什么 76 4.3.2 Emacs的操作 77 4.4 文本的基本操作命令 87 4.4.1 more与less 87 4.4.2 pr 88 4.4.3 tail与head 89 4.4.4 spell...

    Linux期末考试(题多 有点难度)

    83 进行字符串查找,使用grep命令。 84. 使用 * 每次匹配若干个字符。 85. /sbin 目录用来存放系统管理员使用的管理程序。 二.单项选择题: 1. 下面的网络协议中,面向连接的的协议是: A 。 A 传输控制协议 B ...

    keysniffer:Linux内核模式debugfs键盘记录器-开源

    Linux内核模块,用于捕获键盘或按键记录器中按下的键。 keysniffer最初是在考虑美国键盘(和兼容笔记本电脑)的情况下编写的。 默认情况下,它为按下的键显示人类可读的字符串。 但是,随着键盘的发展,增加了更多的...

    LINUX编程白皮书

    8.21.3 字符串型权能 299 8.22 [N]Curses函数概述 306 第9章 I/O端口编程 307 9.1 鼠标编程 307 9.2 调制解调器编程 308 9.3 打印机编程 308 9.4 游戏杆编程 308 第10章 把应用程序移植到Linux上 309 10.1 介绍 309 ...

    RED HAT LINUX 6大全

    2.3.2 内核参数选项 8 2.3.3 安装程序 9 2.3.4 选择一种安装方法 9 2.3.5 光盘安装 10 2.4 硬件配置 14 2.4.1 选择鼠标 14 2.4.2 配置X Window系统 14 2.4.3 配置网络 14 2.4.4 设置时区 15 2.4.5 选择服务自动启动 ...

    Linux编程白皮书

    8.21.3 字符串型权能 299 8.22 [N]Curses函数概述 306 第9章 I/O端口编程 307 9.1 鼠标编程 307 9.2 调制解调器编程 308 9.3 打印机编程 308 9.4 游戏杆编程 308 第10章 把应用程序移植到Linux上 309 10.1 介绍 309 ...

    Linux编程资料

    8.21.3 字符串型权能 299 8.22 [N]Curses函数概述 306 第9章 I/O端口编程 307 9.1 鼠标编程 307 9.2 调制解调器编程 308 9.3 打印机编程 308 9.4 游戏杆编程 308 第10章 把应用程序移植到Linux上 309 10.1 介绍 309 ...

Global site tag (gtag.js) - Google Analytics