isolate_lru_page

本文介绍了一个名为isolate_lru_page的内核函数,该函数用于从LRU(Least Recently Used)列表中移除指定的内存页并更新相应的计数器。此操作通常发生在需要锁定或更改页面状态的场景下。

isolate_lru_page


int isolate_lru_page(struct page *page)
{
int ret = -EBUSY;


VM_BUG_ON_PAGE(!page_count(page), page);
WARN_RATELIMIT(PageTail(page), "trying to isolate tail page");


if (PageLRU(page)) {
struct zone *zone = page_zone(page);
struct lruvec *lruvec;


spin_lock_irq(&zone->lru_lock);
lruvec = mem_cgroup_page_lruvec(page, zone);
if (PageLRU(page)) {
int lru = page_lru(page);
get_page(page);
ClearPageLRU(page);
del_page_from_lru_list(page, lruvec, lru);
ret = 0;
}
spin_unlock_irq(&zone->lru_lock);
}
return ret;
}

static __always_inline void del_page_from_lru_list(struct page *page, struct lruvec *lruvec, enum lru_list lru)
{
list_del(&page->lru);
update_lru_size(lruvec, lru, -hpage_nr_pages(page));
}

static __always_inline void update_lru_size(struct lruvec *lruvec,enum lru_list lru, int nr_pages)
{
#ifdef CONFIG_MEMCG
mem_cgroup_update_lru_size(lruvec, lru, nr_pages);
#else
__update_lru_size(lruvec, lru, nr_pages);
#endif
}

脚本名:iot_security,代码:#!/bin/sh /etc/rc.common START=99 . /lib/iot_security/client_isolate.sh start() { local system_mode=$(uci get sysmode.sysmode.mode) local isolate_enable=$(uci get iot_security.iot_security.enable) local ac_dn="/proc/iot_filter/access_deny" if [ ${isolate_enable} = "on" ]; then isolate_enable=1 else isolate_enable=0 fi local br_lan_mac=$(cat /proc/iot_filter/br_lan_mac) if [ "${br_lan_mac}" == "00:00:00:00:00:00" ]; then local lan_mac=$(getfirm MAC) lan_mac=${lan_mac//-/:} echo $lan_mac > /proc/iot_filter/br_lan_mac if [ -e $ac_dn ]; then echo 4 tcp 80 > $ac_dn echo 4 tcp 443 > $ac_dn echo 4 tcp 20001 > $ac_dn echo 4 tcp 139 > $ac_dn echo 4 tcp 445 > $ac_dn echo 4 tcp 21 > $ac_dn echo 4 tcp 20 > $ac_dn echo 4 tcp 8200 > $ac_dn echo 4 tcp 2222 > $ac_dn echo 4 tcp 20005 > $ac_dn echo 4 udp 20002 > $ac_dn echo 4 udp 137 > $ac_dn echo 4 udp 138 > $ac_dn echo 6 tcp 80 > $ac_dn echo 6 tcp 443 > $ac_dn echo 6 tcp 20001 > $ac_dn echo 6 tcp 139 > $ac_dn echo 6 tcp 445 > $ac_dn echo 6 tcp 21 > $ac_dn echo 6 tcp 20 > $ac_dn echo 6 tcp 8200 > $ac_dn echo 6 tcp 2222 > $ac_dn echo 6 tcp 20005 > $ac_dn echo 6 udp 20002 > $ac_dn echo 6 udp 137 > $ac_dn echo 6 udp 138 > $ac_dn fi fi # check client isolate flag local cur_isolate_flag=$(cat /proc/iot_filter/iot_isolate) if [ "${system_mode}" == "router" ]|| [ "${system_mode}" == "repeater" ]; then if [ "${cur_isolate_flag}" != "${isolate_enable}" ]; then echo $isolate_enable > /proc/iot_filter/iot_isolate fi else if [ "${cur_isolate_flag}" != "0" ]; then echo 0 > /proc/iot_filter/iot_isolate fi fi # check client isolate list client_isolate_config_all $system_mode $isolate_enable } stop(){ clear_tmp_file client_isolate_flush } restart(){ stop start }
最新发布
11-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值