⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kllad_proc.c

📁 1. 8623L平台
💻 C
字号:
/***************************************** Copyright © 2001-2005   Sigma Designs, Inc. All Rights Reserved Proprietary and Confidential *****************************************//**  @file   kllad_proc.c  @brief  /proc related functions for llad   @author Sylvain Garrigues  @date   2005-12-14*/#include <linux/module.h>#include <linux/proc_fs.h>#include "kllad_proc.h"#include "directpool.h"#define TEXT_DRIVER_PROC_ENTRY "driver/"#define LLAD_DEVICE_NAME "llad"static struct proc_dir_entry *proc_driver_dir;static struct proc_dir_entry *proc_pools_dir;int proc_read_pool(char *page, char **start, off_t off, int count, int *eof, void *data) {       	int len = 0;	struct kdmapool *pool = (struct kdmapool *) data;        unsigned long dmapool_id = pool - bufferpools;   	if (test_bit(dmapool_id, &kdmapool_usage_mask)) {                 unsigned long buffer_count = pool->buffercount;                unsigned long buffer_used_count = buffer_count - (unsigned long) atomic_read((atomic_t *) &(pool->available_buffer_count));                             len += snprintf(page + off + len, count - len, "pool%lu: buffer count: %lu\n", dmapool_id, buffer_count);        	if (len >= count)                        goto exit_read_pool;                len += snprintf(page + off + len, count - len, "pool%lu: log2 buffer size: %lu\n", dmapool_id, pool->log2_buffersize);        	if (len >= count)                        goto exit_read_pool;                len += snprintf(page + off + len, count - len, "pool%lu: buffer used: %lu (%lu%%)\n", dmapool_id, buffer_used_count, buffer_used_count * 100 / buffer_count);        }        else                 len += snprintf(page + off + len, count - len, "pool%lu: no buffer in this pool\n", dmapool_id);exit_read_pool:        *eof = 1;	return len;}void add_driver_proc_entry(void) {	proc_driver_dir = proc_mkdir(TEXT_DRIVER_PROC_ENTRY LLAD_DEVICE_NAME, NULL);	proc_driver_dir->owner = THIS_MODULE;}void rm_driver_proc_entry(void) {	remove_proc_entry(TEXT_DRIVER_PROC_ENTRY LLAD_DEVICE_NAME, NULL);}void add_driver_proc_files(void) {        char temp_string[8];        int i;                proc_pools_dir = proc_mkdir("pools", proc_driver_dir);	proc_pools_dir->owner = THIS_MODULE;                for(i = 0 ; i < MAXDMAPOOL ; i++) {                sprintf(temp_string, "pool%d", i);                create_proc_read_entry(temp_string, PROC_ENTRY_FILE_ACCESS, proc_pools_dir, proc_read_pool, bufferpools + i);        }}        void rm_driver_proc_files(void) {        char temp_string[8];        int i;                for(i = 0; i < MAXDMAPOOL ; i++) {                sprintf(temp_string, "pool%d", i);                remove_proc_entry(temp_string, proc_pools_dir);        }       	remove_proc_entry("pools", proc_driver_dir);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -