亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lwt.c

?? lustre 1.6.5 source code
?? C
字號:
/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * * Copyright (C) 2003 Cluster File Systems, Inc. *   Author: Eric Barton <eeb@clusterfs.com> * *   This file is part of Lustre, http://www.lustre.org. * *   Lustre is free software; you can redistribute it and/or *   modify it under the terms of version 2 of the GNU General Public *   License as published by the Free Software Foundation. * *   Lustre is distributed in the hope that it will be useful, *   but WITHOUT ANY WARRANTY; without even the implied warranty of *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *   GNU General Public License for more details. * *   You should have received a copy of the GNU General Public License *   along with Lustre; if not, write to the Free Software *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#ifndef EXPORT_SYMTAB# define EXPORT_SYMTAB#endif#ifndef AUTOCONF_INCLUDED#include <linux/config.h>#endif#include <linux/module.h>#include <linux/kmod.h>#include <linux/kernel.h>#include <linux/kernel.h>#include <linux/mm.h>#include <linux/string.h>#include <linux/stat.h>#include <linux/errno.h>#include <linux/smp_lock.h>#include <linux/unistd.h>#include <linux/interrupt.h>#include <asm/system.h>#include <asm/uaccess.h>#define DEBUG_SUBSYSTEM S_LNET#include <libcfs/kp30.h>#if LWT_SUPPORT#if !KLWT_SUPPORTint         lwt_enabled;lwt_cpu_t   lwt_cpus[NR_CPUS];#endifint         lwt_pages_per_cpu;/* NB only root is allowed to retrieve LWT info; it's an open door into the * kernel... */intlwt_lookup_string (int *size, char *knl_ptr,                   char *user_ptr, int user_size){        int   maxsize = 128;                /* knl_ptr was retrieved from an LWT snapshot and the caller wants to         * turn it into a string.  NB we can crash with an access violation         * trying to determine the string length, so we're trusting our         * caller... */        if (!capable(CAP_SYS_ADMIN))                return (-EPERM);        if (user_size > 0 &&             maxsize > user_size)                maxsize = user_size;        *size = strnlen (knl_ptr, maxsize - 1) + 1;                if (user_ptr != NULL) {                if (user_size < 4)                        return (-EINVAL);                                if (copy_to_user (user_ptr, knl_ptr, *size))                        return (-EFAULT);                /* Did I truncate the string?  */                if (knl_ptr[*size - 1] != 0)                        copy_to_user (user_ptr + *size - 4, "...", 4);        }        return (0);}intlwt_control (int enable, int clear){        lwt_page_t  *p;        int          i;        int          j;        if (!capable(CAP_SYS_ADMIN))                return (-EPERM);        if (!enable) {                LWT_EVENT(0,0,0,0);                lwt_enabled = 0;                mb();                /* give people some time to stop adding traces */                schedule_timeout(10);        }        for (i = 0; i < num_online_cpus(); i++) {                p = lwt_cpus[i].lwtc_current_page;                if (p == NULL)                        return (-ENODATA);                if (!clear)                        continue;                for (j = 0; j < lwt_pages_per_cpu; j++) {                        memset (p->lwtp_events, 0, CFS_PAGE_SIZE);                        p = list_entry (p->lwtp_list.next,                                        lwt_page_t, lwtp_list);                }        }        if (enable) {                lwt_enabled = 1;                mb();                LWT_EVENT(0,0,0,0);        }        return (0);}intlwt_snapshot (cycles_t *now, int *ncpu, int *total_size,               void *user_ptr, int user_size){        const int    events_per_page = CFS_PAGE_SIZE / sizeof(lwt_event_t);        const int    bytes_per_page = events_per_page * sizeof(lwt_event_t);        lwt_page_t  *p;        int          i;        int          j;        if (!capable(CAP_SYS_ADMIN))                return (-EPERM);        *ncpu = num_online_cpus();        *total_size = num_online_cpus() * lwt_pages_per_cpu * bytes_per_page;        *now = get_cycles();                if (user_ptr == NULL)                return (0);        for (i = 0; i < num_online_cpus(); i++) {                p = lwt_cpus[i].lwtc_current_page;                if (p == NULL)                        return (-ENODATA);                                for (j = 0; j < lwt_pages_per_cpu; j++) {                        if (copy_to_user(user_ptr, p->lwtp_events,                                         bytes_per_page))                                return (-EFAULT);                        user_ptr = ((char *)user_ptr) + bytes_per_page;                        p = list_entry(p->lwtp_list.next,                                       lwt_page_t, lwtp_list);                                        }        }        return (0);}intlwt_init () {	int     i;        int     j;        for (i = 0; i < num_online_cpus(); i++)                if (lwt_cpus[i].lwtc_current_page != NULL)                        return (-EALREADY);                LASSERT (!lwt_enabled);	/* NULL pointers, zero scalars */	memset (lwt_cpus, 0, sizeof (lwt_cpus));        lwt_pages_per_cpu = LWT_MEMORY / (num_online_cpus() * CFS_PAGE_SIZE);	for (i = 0; i < num_online_cpus(); i++)		for (j = 0; j < lwt_pages_per_cpu; j++) {			struct page *page = alloc_page (GFP_KERNEL);			lwt_page_t  *lwtp;			if (page == NULL) {				CERROR ("Can't allocate page\n");                                lwt_fini ();				return (-ENOMEM);			}                        LIBCFS_ALLOC(lwtp, sizeof (*lwtp));			if (lwtp == NULL) {				CERROR ("Can't allocate lwtp\n");                                __free_page(page);				lwt_fini ();				return (-ENOMEM);			}                        lwtp->lwtp_page = page;                        lwtp->lwtp_events = page_address(page);			memset (lwtp->lwtp_events, 0, CFS_PAGE_SIZE);			if (j == 0) {				INIT_LIST_HEAD (&lwtp->lwtp_list);				lwt_cpus[i].lwtc_current_page = lwtp;			} else {				list_add (&lwtp->lwtp_list,				    &lwt_cpus[i].lwtc_current_page->lwtp_list);			}                }        lwt_enabled = 1;        mb();        LWT_EVENT(0,0,0,0);        return (0);}voidlwt_fini () {        int    i;        lwt_control(0, 0);                for (i = 0; i < num_online_cpus(); i++)                while (lwt_cpus[i].lwtc_current_page != NULL) {                        lwt_page_t *lwtp = lwt_cpus[i].lwtc_current_page;                                                if (list_empty (&lwtp->lwtp_list)) {                                lwt_cpus[i].lwtc_current_page = NULL;                        } else {                                lwt_cpus[i].lwtc_current_page =                                        list_entry (lwtp->lwtp_list.next,                                                    lwt_page_t, lwtp_list);                                list_del (&lwtp->lwtp_list);                        }                                                __free_page (lwtp->lwtp_page);                        LIBCFS_FREE (lwtp, sizeof (*lwtp));                }}EXPORT_SYMBOL(lwt_enabled);EXPORT_SYMBOL(lwt_cpus);EXPORT_SYMBOL(lwt_init);EXPORT_SYMBOL(lwt_fini);EXPORT_SYMBOL(lwt_lookup_string);EXPORT_SYMBOL(lwt_control);EXPORT_SYMBOL(lwt_snapshot);#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人18视频在线播放| 日韩欧美一区二区三区在线| 在线一区二区视频| 久久伊人蜜桃av一区二区| 亚洲精品老司机| 国产成人精品亚洲777人妖 | 91精品国产美女浴室洗澡无遮挡| 国产欧美综合在线观看第十页| 丝袜美腿亚洲综合| 欧美中文字幕亚洲一区二区va在线| 2023国产精华国产精品| 视频一区二区三区在线| 在线看不卡av| 亚洲欧美日韩成人高清在线一区| 国产成人免费在线观看| 欧美成人三级在线| 免费高清视频精品| 欧美精品视频www在线观看| 亚洲精品视频在线看| 成人亚洲精品久久久久软件| 精品日韩av一区二区| 日本亚洲三级在线| 欧美男女性生活在线直播观看| 成人欧美一区二区三区小说| 丁香五精品蜜臀久久久久99网站| 久久精品亚洲精品国产欧美kt∨| 国产在线观看免费一区| 欧美大尺度电影在线| 视频精品一区二区| 91精品国产综合久久精品麻豆 | 久久66热偷产精品| 欧美电影精品一区二区| 蜜芽一区二区三区| 日韩一区二区视频| 免费高清在线一区| 久久女同互慰一区二区三区| 国产精品一区二区无线| 欧美韩日一区二区三区| 成人av免费网站| 一区二区三区欧美激情| 欧美性色aⅴ视频一区日韩精品| 午夜久久久久久电影| 欧美一级在线免费| 精品综合久久久久久8888| 欧美精品一区二区三区在线| 国产精品一区不卡| 中文字幕一区二区三| 欧美亚洲国产bt| 久久狠狠亚洲综合| 日本一区二区三区在线不卡| 日韩视频在线永久播放| 美女视频一区二区三区| 久久网站最新地址| 99久久精品久久久久久清纯| 亚洲在线一区二区三区| 欧美精品aⅴ在线视频| 精品一区二区三区在线观看 | 99re热这里只有精品免费视频| 自拍偷在线精品自拍偷无码专区 | eeuss国产一区二区三区| 亚洲人吸女人奶水| 91精品国产综合久久蜜臀| 国产精品一区二区无线| 艳妇臀荡乳欲伦亚洲一区| 欧美一区二区免费视频| 国产成人亚洲综合a∨婷婷图片| 一区二区三区在线观看动漫| 欧美一区二区三区在线视频| 国产不卡免费视频| 亚洲国产精品久久久男人的天堂 | 国产福利不卡视频| 亚洲国产精品综合小说图片区| 欧美成人一区二区| 91啪在线观看| 狠狠色综合播放一区二区| 亚洲美女免费视频| 久久久久久久久99精品| 日本韩国欧美一区二区三区| 激情综合五月天| 亚洲一区二区精品视频| 久久久久亚洲综合| 91精品国产一区二区| 国产suv一区二区三区88区| 日韩av不卡在线观看| 亚洲激情第一区| 国产欧美日韩麻豆91| 日韩一级高清毛片| 欧美视频在线一区二区三区 | 极品少妇xxxx精品少妇偷拍 | 色天天综合色天天久久| 国产精品538一区二区在线| 午夜一区二区三区在线观看| 国产精品免费av| 欧美成人伊人久久综合网| 欧美日韩国产高清一区二区| 91麻豆高清视频| 成人一区二区三区在线观看| 美国十次综合导航| 日日夜夜免费精品| 一区二区三国产精华液| 国产精品美女久久久久aⅴ| 久久亚洲精华国产精华液 | 欧美丰满少妇xxxbbb| 欧美自拍丝袜亚洲| 欧洲人成人精品| 在线一区二区三区做爰视频网站| 91小视频免费看| 91小视频免费观看| 91成人在线观看喷潮| 色欧美乱欧美15图片| 色偷偷久久人人79超碰人人澡 | 欧美日韩精品综合在线| 91久久精品国产91性色tv| 一本到一区二区三区| 99精品视频一区| 91最新地址在线播放| 成人动漫一区二区在线| 99久久精品一区二区| 91论坛在线播放| 色婷婷国产精品| 欧美少妇一区二区| 欧美一区三区二区| 精品国产成人系列| 国产亚洲精久久久久久| 中文一区二区在线观看| 国产精品免费网站在线观看| 综合欧美亚洲日本| 一区二区三区精品久久久| 亚洲午夜久久久久久久久久久 | 欧美成人欧美edvon| 久久久无码精品亚洲日韩按摩| 国产亚洲欧美日韩日本| 亚洲欧洲性图库| 亚洲一区二区三区四区在线免费观看 | 97久久精品人人做人人爽 | 日韩欧美国产一二三区| 欧美精品一区二区久久久| 国产区在线观看成人精品| 亚洲人成精品久久久久久| 亚洲一区免费视频| 久久福利资源站| 成人激情av网| 欧美精品日日鲁夜夜添| 久久久久久9999| 亚洲精品视频一区| 蜜桃免费网站一区二区三区| 高清国产午夜精品久久久久久| 欧洲亚洲国产日韩| 久久只精品国产| 一区二区三区在线免费播放| 美腿丝袜亚洲色图| 99精品国产一区二区三区不卡| 欧美日韩第一区日日骚| 国产欧美一区二区精品婷婷| 一区二区高清在线| 国产成人在线视频免费播放| 欧美性生活一区| 国产欧美一区二区精品性色超碰 | **性色生活片久久毛片| 日韩不卡在线观看日韩不卡视频| 国产福利一区二区三区视频 | 欧美艳星brazzers| 久久蜜桃av一区二区天堂| 亚洲最新在线观看| 国产suv精品一区二区883| 欧美日韩国产中文| 亚洲欧美在线观看| 韩国精品主播一区二区在线观看| 欧日韩精品视频| 国产精品久久毛片av大全日韩| 蜜臀av性久久久久蜜臀aⅴ流畅| www.亚洲精品| 久久久精品影视| 日韩国产精品久久| 在线免费一区三区| 国产精品无码永久免费888| 男人的天堂亚洲一区| 欧美在线视频你懂得| 亚洲欧洲在线观看av| 国产成a人亚洲| 久久精品男人的天堂| 麻豆精品一二三| 欧美精品vⅰdeose4hd| 一区二区三区精密机械公司| eeuss鲁片一区二区三区| 国产精品网站在线播放| 国产一区二区看久久| 日韩精品综合一本久道在线视频| 午夜影院久久久| 欧美日韩五月天| 樱桃国产成人精品视频| 91在线精品一区二区| 国产精品高潮久久久久无| 国产成人高清视频| 中文字幕免费在线观看视频一区| 国产精品亚洲一区二区三区妖精| 精品少妇一区二区三区免费观看| 美女性感视频久久| 欧美精品一区二区精品网| 国产在线精品一区二区|