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

📄 symlink.c

📁 嵌入式linux下基于SRAM的内存文件系统
💻 C
字号:
/* * FILE NAME fs/pramfs/symlink.c * * BRIEF DESCRIPTION * * Symlink operations * * Author: Steve Longerbeam <stevel@mvista.com, or source@mvista.com> * * Copyright 2003 Sony Corporation * Copyright 2003 Matsushita Electric Industrial Co., Ltd. * 2003-2004 (c) MontaVista Software, Inc. This file is licensed under * the terms of the GNU General Public License version 2. This program * is licensed "as is" without any warranty of any kind, whether express * or implied. */#include <linux/fs.h>#include <linux/pram_fs.h>int pram_block_symlink(struct inode *inode, const char *symname, int len){	struct super_block * sb = inode->i_sb;	pram_off_t block;	char* blockp;	int err;	err = pram_alloc_blocks (inode, 0, 1);	if (err)		return err;	block = pram_find_data_block(inode, 0);	blockp = pram_get_block(sb, block);	pram_backup_add_block(sb, blockp);	pram_lock_block(sb, blockp);	memcpy(blockp, symname, len);	blockp[len] = '\0';	pram_unlock_block(sb, blockp);	pram_backup_del_block(sb, blockp);	return 0;}static int pram_readlink(struct dentry *dentry, char __user *buffer, int buflen){	struct inode * inode = dentry->d_inode;	struct super_block * sb = inode->i_sb;	pram_off_t block;	char* blockp;	block = pram_find_data_block(inode, 0);	blockp = pram_get_block(sb, block);	return vfs_readlink(dentry, buffer, buflen, blockp);}static void * pram_follow_link(struct dentry *dentry, struct nameidata *nd){	struct inode * inode = dentry->d_inode;	struct super_block * sb = inode->i_sb;	pram_off_t block;	char* blockp;	block = pram_find_data_block(inode, 0);	blockp = pram_get_block(sb, block);	return ERR_PTR(vfs_follow_link(nd, blockp));}const struct inode_operations pram_symlink_inode_operations = {	.readlink	= pram_readlink,	.follow_link	= pram_follow_link,};

⌨️ 快捷键说明

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