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

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

?? super.c

?? 在Linux內核從2.4升級到2.6時需要升級的軟件包
?? C
字號:
/* *   Copyright (c) International Business Machines Corp., 2000-2002 * *   This program is free software;  you can redistribute it and/or modify *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 2 of the License, or *   (at your option) any later version. * *   This program 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 this program;  if not, write to the Free Software *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#include <config.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <errno.h>#include "jfs_endian.h"#include "jfs_types.h"#include "jfs_filsys.h"#include "jfs_superblock.h"#include "libjufs.h"#include "devices.h"#include "jfs_dmap.h"#include "utilsubs.h"/* * NAME: inrange * * FUNCTION: Checks to see that <num> is a power-of-2 multiple of <low> that is *      less than or equal to <high>. * * PRE CONDITIONS: * * POST CONDITIONS: * * PARAMETERS: * * NOTES: * * DATA STRUCTURES: * * RETURNS: If it is, it returns 1, else 0 */int inrange(uint32_t num, uint32_t low, uint32_t high){	if (low) {		for (; low <= high; low <<= 1) {			if (low == num) {				return 1;			}		}	}	return 0;}/* * NAME: validate_sizes * * FUNCTION: Ensure that all configurable sizes fall within their respective *      version specific limits. * * PRE CONDITIONS: * * POST CONDITIONS: * * PARAMETERS: *      sb      - superblock to check sizes * * NOTES: * * RECOVERY OPERATION: * * DATA STRUCTURES: * * RETURNS: *      success: 0 *      failure:  any other value */static int validate_sizes(struct superblock *sb){	/*	 * Make sure AG size is at least 32M	 */	if (sb->s_agsize >= (1 << L2BPERDMAP)) {		return 0;	}	return EINVAL;}/* * NAME: ujfs_validate_super * * FUNCTION: Check if superblock is valid * * PRE CONDITIONS: * * POST CONDITIONS: * * PARAMETERS: *      sb      - superblock to validate * * NOTES: * * RECOVERY OPERATION: * * DATA STRUCTURES: * * RETURNS: *      success: 0 *      failure: LIBFS_CORRUPTSUPER, LIBFS_BADVERSION, LIBFS_BADMAGIC */int ujfs_validate_super(struct superblock *sb){	if (memcmp(sb->s_magic, JFS_MAGIC, sizeof (sb->s_magic)) == 0) {		if (sb->s_version > JFS_VERSION)			return LIBFS_BADVERSION;		if (validate_sizes(sb) == EINVAL)			return LIBFS_CORRUPTSUPER;	} else {		return LIBFS_BADMAGIC;	}	return 0;}/* * NAME: ujfs_put_superblk * * FUNCTION: Write primary or secondary aggregate superblock * * PRE CONDITIONS: * * POST CONDITIONS: * * PARAMETERS: *      fp              - open port for device to write superblock to *      sb              - pointer to struct superblock to be written *      is_primary      - 0 value means we are putting the secondary superblock; *                        non-zero value means we are putting the primary *                        superblock. * * NOTES: The sizeof(struct superblock) is less than the amount of disk space *      being allowed for the superblock (SIZE_OF_SUPER).  This function will *      write 0's to the space following the actual superblock structure to fill *      the entire allocated disk space. * * RECOVERY OPERATION: * * DATA STRUCTURES: * * RETURNS: *      success: 0 *      failure: any other value */int ujfs_put_superblk(FILE *fp, struct superblock *sb, int16_t is_primary){	char buf[SIZE_OF_SUPER];	int rc;	memset(buf, 0, SIZE_OF_SUPER);	memcpy(buf, sb, sizeof (*sb));	/* swap if on big endian machine */	ujfs_swap_superblock((struct superblock *) buf);	rc = ujfs_rw_diskblocks(fp, (is_primary ? SUPER1_OFF : SUPER2_OFF),				SIZE_OF_SUPER, buf, PUT);	return rc;}/* * NAME: ujfs_get_superblk * * FUNCTION: read either the primary or secondary superblock from the specified *      device * * PRE CONDITIONS: * * POST CONDITIONS: * * PARAMETERS: *      fp              - open port for device to read superblock from *      sb              - pointer to struct superblock to be filled in on return *      is_primary      - 0 indicates to retrieve secondary superblock, *                        otherwise retrieve primary superblock * * NOTES: * * RECOVERY OPERATION: * * DATA STRUCTURES: * * RETURNS: *      success: 0 *      failure: any other value */int ujfs_get_superblk(FILE *fp, struct superblock *sb, int32_t is_primary){	int rc;	char buf[SIZE_OF_SUPER];	struct superblock *sblk = (struct superblock *) buf;	rc = ujfs_rw_diskblocks(fp, (is_primary ? SUPER1_OFF : SUPER2_OFF),				SIZE_OF_SUPER, sblk, GET);	ujfs_swap_superblock(sblk);	if (rc != 0)		return rc;	memcpy(sb, sblk, sizeof (*sb));	return 0;}/* * NAME: ujfs_validate_logsuper * * FUNCTION: Check if log superblock is valid * * PRE CONDITIONS: * * POST CONDITIONS: * * PARAMETERS: *      logsup - log superblock to validate * * NOTES: * * RECOVERY OPERATION: * * DATA STRUCTURES: * * RETURNS: *      success: 0 *      failure: LIBFS_BADVERSION, LIBFS_BADMAGIC */int ujfs_validate_logsuper(struct logsuper *logsup){	/* see if superblock is JFS log superblock */	if (logsup->magic == LOGMAGIC) {		if (logsup->version != LOGVERSION) {			return LIBFS_BADVERSION;		}	} else {		return LIBFS_BADMAGIC;	}	return 0;}/* * NAME: ujfs_put_logsuper * * FUNCTION: Write log superblock to disk * * PRE CONDITIONS: * * POST CONDITIONS: * * PARAMETERS: *      fp      - open port for device to write superblock to *      logsup  - pointer to log superblock to be written * * NOTES: * * RECOVERY OPERATION: * * DATA STRUCTURES: * * RETURNS: *      success: 0 *      failure: any other value */int ujfs_put_logsuper(FILE *fp, struct logsuper *logsup){	char buf[sizeof (struct logsuper)];	int rc = 0;	memcpy(buf, logsup, sizeof (struct logsuper));	/* swap if on big endian machine */	ujfs_swap_logsuper((struct logsuper *) buf);	rc = ujfs_rw_diskblocks(fp, LOGPSIZE, sizeof (struct logsuper), buf, PUT);	return rc;}/* * NAME: ujfs_get_logsuper * * FUNCTION: read the log superblock from the specified device * * PRE CONDITIONS: * * POST CONDITIONS: * * PARAMETERS: *      fp      - open port for device to read superblock from *      logsup  - pointer to log superblock to be filled in on return * * NOTES: * * RECOVERY OPERATION: * * DATA STRUCTURES: * * RETURNS: *      success: 0 *      failure: any other value */int ujfs_get_logsuper(FILE *fp, struct logsuper *logsup){	int rc = 0;	char buf[sizeof (struct logsuper)];	struct logsuper *logsup_buf = (struct logsuper *) buf;	rc = ujfs_rw_diskblocks(fp, LOGPSIZE, sizeof (struct logsuper), logsup_buf, GET);	if (!rc) {		ujfs_swap_logsuper(logsup_buf);		memcpy(logsup, logsup_buf, sizeof (struct logsuper));	}	return rc;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区久久| 亚洲精选免费视频| 粉嫩av一区二区三区| 日日夜夜精品视频免费| 成人网在线播放| 日韩欧美区一区二| 亚洲va在线va天堂| 色婷婷亚洲精品| 国产精品九色蝌蚪自拍| 极品少妇一区二区| 欧美一区二区私人影院日本| 一区二区三区波多野结衣在线观看| 国产美女精品一区二区三区| 日韩美女在线视频| 午夜视频在线观看一区二区| 91麻豆精品在线观看| 国产精品人成在线观看免费| 国产成人精品免费看| 久久综合丝袜日本网| 激情综合色丁香一区二区| 777色狠狠一区二区三区| 亚洲第一主播视频| 欧美性生活一区| 亚洲主播在线播放| 一本到一区二区三区| 亚洲精品老司机| 欧洲中文字幕精品| 亚洲h在线观看| 在线不卡一区二区| 麻豆91在线观看| 精品久久久久一区| 国产黄色精品网站| 国产精品网站在线| 91网页版在线| 一区二区三区不卡视频| 欧美日韩国产经典色站一区二区三区| 亚洲专区一二三| 欧美日本在线一区| 麻豆91在线播放免费| 久久久夜色精品亚洲| 国产福利电影一区二区三区| 国产精品亲子伦对白| aaa欧美色吧激情视频| 亚洲欧美另类小说视频| 欧美日韩免费一区二区三区视频| 午夜激情一区二区| 精品日产卡一卡二卡麻豆| 国产精品综合视频| 亚洲日本va午夜在线电影| 欧美午夜精品免费| 美女脱光内衣内裤视频久久网站| 26uuu亚洲综合色| jizzjizzjizz欧美| 五月激情综合网| 久久久久综合网| 中文字幕va一区二区三区| 国产真实乱对白精彩久久| 中文字幕国产一区| 欧美日韩激情一区二区三区| 久久99精品国产.久久久久 | 国内精品第一页| 亚洲欧洲精品一区二区三区不卡| 色域天天综合网| 久久99国产精品免费网站| 亚洲欧美怡红院| 日韩欧美一区二区不卡| 成人精品免费视频| 丝袜亚洲另类欧美综合| 国产精品欧美极品| 欧美一级在线视频| 波多野结衣中文字幕一区 | 亚洲精品欧美激情| 日韩欧美一级特黄在线播放| 99久久精品一区二区| 久久国产精品72免费观看| 成人免费一区二区三区在线观看| 日韩久久免费av| 欧美亚洲国产bt| 成人深夜在线观看| 麻豆91精品视频| 亚洲精品你懂的| 国产精品理论在线观看| 日韩精品一区二区三区视频在线观看| 97精品久久久午夜一区二区三区| 另类小说欧美激情| 亚洲777理论| 亚洲欧美日韩成人高清在线一区| 久久久午夜精品| 欧美丰满少妇xxxxx高潮对白| 91麻豆精东视频| 丁香一区二区三区| 国产乱码精品一区二区三区五月婷| 午夜精品久久久久久不卡8050| 中文字幕在线不卡视频| 国产日韩亚洲欧美综合| 精品国产免费一区二区三区香蕉| 欧美久久久久久蜜桃| 欧美三级资源在线| 日本精品裸体写真集在线观看 | 男女性色大片免费观看一区二区| 亚洲综合免费观看高清在线观看| 国产精品二区一区二区aⅴ污介绍| 久久精品日产第一区二区三区高清版| 538在线一区二区精品国产| 欧美影院一区二区| 欧美亚洲动漫制服丝袜| 在线一区二区三区做爰视频网站| 91啪在线观看| 91视视频在线观看入口直接观看www | 一区二区三区欧美在线观看| 亚洲欧美日韩在线播放| 1024成人网| 国产精品国产精品国产专区不蜜 | 4438亚洲最大| 日韩一区二区在线观看视频| 亚洲素人一区二区| 欧美日韩国产一级二级| 欧美午夜片在线看| 欧美午夜精品久久久久久孕妇| 一本在线高清不卡dvd| 91国模大尺度私拍在线视频| 91黄色激情网站| 欧美日韩专区在线| 欧美一卡二卡三卡| 久久精品夜色噜噜亚洲a∨ | 精品日韩99亚洲| 久久久精品天堂| 亚洲婷婷综合色高清在线| 亚洲人成电影网站色mp4| 亚洲福利视频一区| 九九九久久久精品| av电影在线观看不卡 | 成人动漫中文字幕| 在线看一区二区| 日韩一区二区影院| 国产欧美视频在线观看| 亚洲精品你懂的| 青椒成人免费视频| 成人激情午夜影院| 在线影院国内精品| 久久综合网色—综合色88| 亚洲欧洲成人精品av97| 婷婷综合五月天| 国产精品66部| 欧美日韩一区二区不卡| 久久综合九色综合久久久精品综合| 国产精品第13页| 麻豆国产精品官网| 一本到三区不卡视频| 日韩三级伦理片妻子的秘密按摩| 久久精品欧美一区二区三区麻豆| 一区二区在线免费观看| 久久99精品国产.久久久久| 91伊人久久大香线蕉| 欧美一区三区二区| 亚洲人成在线播放网站岛国| 日本欧美在线观看| 91同城在线观看| 久久精品一区蜜桃臀影院| 亚洲成人一区在线| gogo大胆日本视频一区| 精品少妇一区二区三区在线播放| 亚洲另类在线视频| 国产成人综合亚洲91猫咪| 777亚洲妇女| 亚洲另类在线制服丝袜| 成人激情动漫在线观看| 日韩欧美一区二区在线视频| 亚洲一区二区视频在线| caoporm超碰国产精品| 欧美成人女星排行榜| 亚洲成a人v欧美综合天堂| 成人免费视频视频| 亚洲精品在线观| 美腿丝袜亚洲综合| 欧美日本一区二区在线观看| 亚洲视频免费在线观看| 国产一区二区网址| 日韩欧美在线观看一区二区三区| 一卡二卡三卡日韩欧美| 成人h动漫精品一区二区| 久久网这里都是精品| 久久爱www久久做| 91精品国产一区二区三区香蕉| 亚洲欧美国产77777| 99久久婷婷国产综合精品电影| 久久精品视频在线免费观看 | 亚洲福利国产精品| 欧美视频在线一区| 亚洲午夜久久久久中文字幕久| 99精品视频中文字幕| 国产精品黄色在线观看| a4yy欧美一区二区三区| 亚洲欧洲色图综合| 成人深夜在线观看| 亚洲欧美自拍偷拍| 99久久久精品| 亚洲精品国产成人久久av盗摄| 欧美浪妇xxxx高跟鞋交| 国产精品综合二区|