📄 jfs_endian.c
字号:
*/ while ((index != -1) && (len > 0)) { if (index > lastslot) break; dtslot = &dtp_t->slot[index]; for (j = 0; j < DTSLOTDATALEN; j++) dtslot->name[j] = __le16_to_cpu(dtslot->name[j]); len -= DTSLOTDATALEN; index = dtslot->next; } } }}/*-------------------------------------------------------------------- * NAME: ujfs_swap_fsck_blk_map_hdr * * FUNCTION: Change endianness of fsck_blk_map_hdr structure * * PARAMETERS: * fsck_bmap_h - fsck block map header structure * * RETURNS: NONE */void ujfs_swap_fsck_blk_map_hdr(struct fsck_blk_map_hdr *fsck_bmap_h){ int i; /* fsck_blk_map_hdr in libfs/fsckwsp.h */ /* struct fsckcbbl_record cbblrec */ fsck_bmap_h->cbblrec.cbbl_retcode = __le32_to_cpu(fsck_bmap_h->cbblrec.cbbl_retcode); fsck_bmap_h->cbblrec.fs_blksize = __le32_to_cpu(fsck_bmap_h->cbblrec.fs_blksize); fsck_bmap_h->cbblrec.lv_blksize = __le32_to_cpu(fsck_bmap_h->cbblrec.lv_blksize); fsck_bmap_h->cbblrec.fs_lv_ratio = __le32_to_cpu(fsck_bmap_h->cbblrec.fs_lv_ratio); fsck_bmap_h->cbblrec.fs_last_metablk = __le64_to_cpu(fsck_bmap_h->cbblrec.fs_last_metablk); fsck_bmap_h->cbblrec.fs_first_wspblk = __le64_to_cpu(fsck_bmap_h->cbblrec.fs_first_wspblk); fsck_bmap_h->cbblrec.total_bad_blocks = __le32_to_cpu(fsck_bmap_h->cbblrec.total_bad_blocks); fsck_bmap_h->cbblrec.resolved_blocks = __le32_to_cpu(fsck_bmap_h->cbblrec.resolved_blocks); fsck_bmap_h->cbblrec.reloc_extents = __le32_to_cpu(fsck_bmap_h->cbblrec.reloc_extents); fsck_bmap_h->cbblrec.reloc_blocks = __le64_to_cpu(fsck_bmap_h->cbblrec.reloc_blocks); fsck_bmap_h->cbblrec.LVM_lists = __le32_to_cpu(fsck_bmap_h->cbblrec.LVM_lists); fsck_bmap_h->hdr.last_entry_pos = __le32_to_cpu(fsck_bmap_h->hdr.last_entry_pos); fsck_bmap_h->hdr.next_entry_pos = __le32_to_cpu(fsck_bmap_h->hdr.next_entry_pos); fsck_bmap_h->hdr.return_code = __le32_to_cpu(fsck_bmap_h->hdr.return_code); fsck_bmap_h->hdr.fscklog_agg_offset = __le64_to_cpu(fsck_bmap_h->hdr.fscklog_agg_offset); fsck_bmap_h->hdr.num_logwrite_errors = __le32_to_cpu(fsck_bmap_h->hdr.num_logwrite_errors); /* struct fscklog_error logerr[125] */ for (i = 0; i < 125; i++) { fsck_bmap_h->hdr.logerr[i].err_offset = __le64_to_cpu(fsck_bmap_h->hdr.logerr[i].err_offset); fsck_bmap_h->hdr.logerr[i].bytes_written = __le32_to_cpu(fsck_bmap_h->hdr.logerr[i].bytes_written); fsck_bmap_h->hdr.logerr[i].io_retcode = __le32_to_cpu(fsck_bmap_h->hdr.logerr[i].io_retcode); }}/*-------------------------------------------------------------------- * NAME: ujfs_swap_fsck_blk_map_page * * FUNCTION: Change endianness of fsck_blk_map_page structure * * PARAMETERS: * fsck_bmap_p - fsck block map page structure * * RETURNS: NONE */void ujfs_swap_fsck_blk_map_page(struct fsck_blk_map_page *fsck_bmap_p){ int i; /* fsck_blk_map_page in libfs/fsckwsp.h */ for (i = 0; i < 1024; i++) fsck_bmap_p->fsck_blkmap_words[i] = __le32_to_cpu(fsck_bmap_p->fsck_blkmap_words[i]);}/*-------------------------------------------------------------------- * NAME: ujfs_swap_iag * * FUNCTION: Change endianness of iag structure * * PARAMETERS: * ia_t - iag structure * * RETURNS: NONE */void ujfs_swap_iag(struct iag *ia_t){ int i; /* iag in jfs_logmgr.h */ ia_t->agstart = __le64_to_cpu(ia_t->agstart); ia_t->iagnum = __le32_to_cpu(ia_t->iagnum); ia_t->inofreefwd = __le32_to_cpu(ia_t->inofreefwd); ia_t->inofreeback = __le32_to_cpu(ia_t->inofreeback); ia_t->extfreefwd = __le32_to_cpu(ia_t->extfreefwd); ia_t->extfreeback = __le32_to_cpu(ia_t->extfreeback); ia_t->iagfree = __le32_to_cpu(ia_t->iagfree); for (i = 0; i < SMAPSZ; i++) { ia_t->inosmap[i] = __le32_to_cpu(ia_t->inosmap[i]); ia_t->extsmap[i] = __le32_to_cpu(ia_t->extsmap[i]); } ia_t->nfreeinos = __le32_to_cpu(ia_t->nfreeinos); ia_t->nfreeexts = __le32_to_cpu(ia_t->nfreeexts); for (i = 0; i < EXTSPERIAG; i++) { ia_t->wmap[i] = __le32_to_cpu(ia_t->wmap[i]); ia_t->pmap[i] = __le32_to_cpu(ia_t->pmap[i]); }}/*-------------------------------------------------------------------- * NAME: ujfs_swap_logpage * * FUNCTION: Change endianness of logpage structure * * PARAMETERS: * lpage_t - logpage structure * numpages - number of pages to swap * * RETURNS: NONE */void ujfs_swap_logpage(struct logpage *lpage_t, uint8_t numpages){ uint8_t i; struct logpage *lp_t; /* struct logpage in jfs_logmgr.h */ lp_t = lpage_t; for (i = 0; i < numpages; i++) { lp_t->h.page = __le32_to_cpu(lp_t->h.page); lp_t->h.rsrvd = __le16_to_cpu(lp_t->h.rsrvd); lp_t->h.eor = __le16_to_cpu(lp_t->h.eor); lp_t->t.page = __le32_to_cpu(lp_t->t.page); lp_t->t.rsrvd = __le16_to_cpu(lp_t->t.rsrvd); lp_t->t.eor = __le16_to_cpu(lp_t->t.eor); lp_t++; }}/*-------------------------------------------------------------------- * NAME: ujfs_swap_logsuper * * FUNCTION: Change endianness of logsuper structure * * PARAMETERS: * lsup_t - logsuper structure * * RETURNS: NONE */void ujfs_swap_logsuper(struct logsuper *lsup_t){ int i; /* struct logsuper in jfs_logmgr.h */ lsup_t->magic = __le32_to_cpu(lsup_t->magic); lsup_t->version = __le32_to_cpu(lsup_t->version); lsup_t->serial = __le32_to_cpu(lsup_t->serial); lsup_t->size = __le32_to_cpu(lsup_t->size); lsup_t->bsize = __le32_to_cpu(lsup_t->bsize); lsup_t->l2bsize = __le32_to_cpu(lsup_t->l2bsize); lsup_t->flag = __le32_to_cpu(lsup_t->flag); lsup_t->state = __le32_to_cpu(lsup_t->state); lsup_t->end = __le32_to_cpu(lsup_t->end);}/*-------------------------------------------------------------------- * NAME: ujfs_swap_lrd * * FUNCTION: Change endianness of lrd structure * * PARAMETERS: * lrd - lrd structure * * RETURNS: NONE */void ujfs_swap_lrd(struct lrd *lrd){ lrd->logtid = __le32_to_cpu(lrd->logtid); lrd->backchain = __le32_to_cpu(lrd->backchain); lrd->type = __le16_to_cpu(lrd->type); lrd->length = __le16_to_cpu(lrd->length); lrd->aggregate = __le32_to_cpu(lrd->aggregate); switch (lrd->type) { case LOG_COMMIT: break; case LOG_SYNCPT: lrd->log.syncpt.sync = __le32_to_cpu(lrd->log.syncpt.sync); break; case LOG_MOUNT: break; case LOG_REDOPAGE: case LOG_NOREDOPAGE: lrd->log.redopage.fileset = __le32_to_cpu(lrd->log.redopage.fileset); lrd->log.redopage.inode = __le32_to_cpu(lrd->log.redopage.inode); lrd->log.redopage.type = __le16_to_cpu(lrd->log.redopage.type); lrd->log.redopage.l2linesize = __le16_to_cpu(lrd->log.redopage.l2linesize); break; case LOG_UPDATEMAP: lrd->log.updatemap.fileset = __le32_to_cpu(lrd->log.updatemap.fileset); lrd->log.updatemap.inode = __le32_to_cpu(lrd->log.updatemap.inode); lrd->log.updatemap.type = __le16_to_cpu(lrd->log.updatemap.type); lrd->log.updatemap.nxd = __le16_to_cpu(lrd->log.updatemap.nxd); break; case LOG_NOREDOINOEXT: lrd->log.noredoinoext.fileset = __le32_to_cpu(lrd->log.noredoinoext.fileset); lrd->log.noredoinoext.iagnum = __le32_to_cpu(lrd->log.noredoinoext.iagnum); lrd->log.noredoinoext.inoext_idx = __le32_to_cpu(lrd->log.noredoinoext.inoext_idx); break; }}/*-------------------------------------------------------------------- * NAME: ujfs_swap_superblock * * FUNCTION: Change endianness of superblock structure * * PARAMETERS: * sblk - superblock structure * * RETURNS: NONE */void ujfs_swap_superblock(struct superblock *sblk){ /* superblock in jfs_superblock.h */ sblk->s_version = __le32_to_cpu(sblk->s_version); sblk->s_size = __le64_to_cpu(sblk->s_size); sblk->s_bsize = __le32_to_cpu(sblk->s_bsize); sblk->s_l2bsize = __le16_to_cpu(sblk->s_l2bsize); sblk->s_l2bfactor = __le16_to_cpu(sblk->s_l2bfactor); sblk->s_pbsize = __le32_to_cpu(sblk->s_pbsize); sblk->s_l2pbsize = __le16_to_cpu(sblk->s_l2pbsize); sblk->pad = __le16_to_cpu(sblk->pad); sblk->s_agsize = __le32_to_cpu(sblk->s_agsize); sblk->s_flag = __le32_to_cpu(sblk->s_flag); sblk->s_state = __le32_to_cpu(sblk->s_state); sblk->s_compress = __le32_to_cpu(sblk->s_compress); sblk->s_logdev = __le32_to_cpu(sblk->s_logdev); sblk->s_logserial = __le32_to_cpu(sblk->s_logserial); /* struct timestruc_t s_time; */ sblk->s_time.tv_sec = __le32_to_cpu(sblk->s_time.tv_sec); sblk->s_time.tv_nsec = __le32_to_cpu(sblk->s_time.tv_nsec); sblk->s_fsckloglen = __le32_to_cpu(sblk->s_fsckloglen); sblk->s_xsize = __le64_to_cpu(sblk->s_xsize);}/*-------------------------------------------------------------------- * NAME: ujfs_swap_xtpage_t * * FUNCTION: Change endianness of xtpage_t structure * * PARAMETERS: * xtp_t - xtpage_t structure * mode - PUT or GET * * RETURNS: NONE */void ujfs_swap_xtpage_t(xtpage_t * xtp_t){ /* xtpage_t in jfs_xtree.h */ /* struct xtheader header; */ xtp_t->header.next = __le64_to_cpu(xtp_t->header.next); xtp_t->header.prev = __le64_to_cpu(xtp_t->header.prev); xtp_t->header.maxentry = __le16_to_cpu(xtp_t->header.maxentry); xtp_t->header.rsrvd2 = __le16_to_cpu(xtp_t->header.rsrvd2); xtp_t->header.nextindex = __le16_to_cpu(xtp_t->header.nextindex);}/*-------------------------------------------------------------------- * NAME: ujfs_swap_fscklog_entry_hdr * * FUNCTION: Change endianness of fscklog_entry_hdr structure * * PARAMETERS: * hdptr - pointer to fscklog_entry_hdr structure * * RETURNS: NONE */void ujfs_swap_fscklog_entry_hdr(struct fscklog_entry_hdr *hdptr){ /* fscklog_entry_hdr in fscklog.h */ hdptr->entry_length = __le16_to_cpu(hdptr->entry_length);}#endif /* BIG ENDIAN */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -