From: Carsten Otte <cotte@de.ibm.com>
To: jaredeh@gmail.com
Cc: Linux-kernel@vger.kernel.org, linux-embedded@vger.kernel.org,
linux-mtd <linux-mtd@lists.infradead.org>,
"Jörn Engel" <joern@logfs.org>,
tim.bird@AM.SONY.COM, nickpiggin@yahoo.com.au
Subject: Re: [PATCH 03/10] AXFS: axfs.h
Date: Thu, 21 Aug 2008 09:51:02 +0200 [thread overview]
Message-ID: <48AD1E66.40307@de.ibm.com> (raw)
In-Reply-To: <48AD00E6.2070505@gmail.com>
Jared Hulbert wrote:
> +#define AXFS_GET_BYTETABLE_VAL(desc,index) \
> + axfs_bytetable_stitch(((struct axfs_region_desc)(desc)).table_byte_depth,\
> + (u8 *)((struct axfs_region_desc)(desc)).virt_addr, index)
> +
> +#define AXFS_GET_NODE_TYPE(sbi,node_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->node_type,\
> + (node_index))
> +
> +#define AXFS_GET_NODE_INDEX(sbi,node__index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->node_index,\
> + (node__index))
> +
> +#define AXFS_IS_NODE_XIP(sbi,node_index) \
> + (AXFS_GET_NODE_TYPE(sbi, (node_index)) == XIP)
> +
> +#define AXFS_GET_CNODE_INDEX(sbi,node_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->cnode_index,\
> + (node_index))
> +
> +#define AXFS_GET_CNODE_OFFSET(desc,node_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->cnode_offset,\
> + (node_index))
> +
> +#define AXFS_GET_BANODE_OFFSET(desc,node_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->banode_offset,\
> + (node_index))
> +
> +#define AXFS_GET_CBLOCK_OFFSET(desc,node_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->cblock_offset,\
> + (node_index))
> +
> +#define AXFS_GET_INODE_FILE_SIZE(sbi,inode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->inode_file_size,\
> + (inode_index))
> +
> +#define AXFS_GET_INODE_NAME_OFFSET(sbi,inode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->inode_name_offset,\
> + (inode_index))
> +
> +#define AXFS_GET_INODE_NUM_ENTRIES(sbi,inode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->inode_num_entries,\
> + (inode_index))
> +
> +#define AXFS_GET_INODE_MODE_INDEX(sbi,inode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->inode_mode_index,\
> + (inode_index))
> +
> +#define AXFS_GET_INODE_ARRAY_INDEX(sbi,inode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->inode_array_index,\
> + (inode_index))
> +
> +#define AXFS_GET_MODE(sbi,mode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->modes,\
> + (AXFS_GET_INODE_MODE_INDEX(sbi, (mode_index))))
> +
> +#define AXFS_GET_UID(sbi,mode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->uids,\
> + (AXFS_GET_INODE_MODE_INDEX(sbi, (mode_index))))
> +
> +#define AXFS_GET_GID(sbi,mode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->gids,\
> + (AXFS_GET_INODE_MODE_INDEX(sbi, (mode_index))))
> +
> +#define AXFS_IS_REGION_COMPRESSED(_region) \
> + (( \
> + ((struct axfs_region_desc *)(_region))->compressed_size > \
> + 0 \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_PHYSADDR_IS_VALID(sbi) \
> + (((((struct axfs_super *)(sbi))->phys_start_addr) > 0 \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_VIRTADDR_IS_VALID(sbi) \
> + (((((struct axfs_super *)(sbi))->virt_start_addr) > 0 \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_IS_IOMEM(sbi) \
> + (((((struct axfs_super *)(sbi))->iomem_size) > 0) ? TRUE : FALSE)
> +
> +#define AXFS_IS_POINTED(sbi) \
> + (((((struct axfs_super *)(sbi))->mtd_pointed) > 0) ? TRUE : FALSE)
> +
> +#define AXFS_IS_PHYSMEM(sbi) \
> + (( \
> + AXFS_PHYSADDR_IS_VALID(sbi) \
> + && !AXFS_IS_IOMEM(sbi) \
> + && !AXFS_IS_POINTED(sbi) \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_IS_MMAPABLE(sbi,offset) \
> + ((\
> + (((struct axfs_super *)(sbi))->mmap_size) > (offset) \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_IS_OFFSET_MMAPABLE(sbi,offset) \
> + (( \
> + AXFS_IS_MMAPABLE(sbi, offset) && AXFS_VIRTADDR_IS_VALID(sbi) \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_IS_REGION_MMAPABLE(sbi,_region) \
> + (( \
> + AXFS_IS_MMAPABLE(sbi, ((struct axfs_region_desc *)(_region))->fsoffset) \
> + && AXFS_VIRTADDR_IS_VALID(sbi) \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_IS_REGION_INCORE(_region) \
> + (((_region)->incore > 0) ? TRUE : FALSE)
> +
> +#define AXFS_IS_REGION_XIP(sbi,_region) \
> + (( \
> + !AXFS_IS_REGION_COMPRESSED(_region) && \
> + !AXFS_IS_REGION_INCORE(_region) && \
> + AXFS_IS_REGION_MMAPABLE(sbi,_region) \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_GET_XIP_REGION_PHYSADDR(sbi) \
> + (unsigned long)((sbi)->phys_start_addr + (sbi)->xip.fsoffset)
> +
> +#define AXFS_GET_INODE_NAME(sbi,inode_index) \
> + (char *)( \
> + (sbi)->strings.virt_addr \
> + + AXFS_GET_INODE_NAME_OFFSET(sbi,inode_index) \
> + )
> +
> +#define AXFS_GET_CBLOCK_ADDRESS(sbi, cnode_index)\
> + (unsigned long)( \
> + (sbi)->compressed.virt_addr \
> + + AXFS_GET_CBLOCK_OFFSET(sbi, cnode_index) \
> + )
> +
> +#define AXFS_GET_NODE_ADDRESS(sbi,node__index) \
> + (unsigned long)( \
> + (sbi)->node_index.virt_addr \
> + + AXFS_GET_NODE_INDEX(sbi, node__index) \
> + )
> +
> +#define AXFS_GET_BANODE_ADDRESS(sbi,banode_index) \
> + (unsigned long)( \
> + (sbi)->byte_aligned.virt_addr \
> + + AXFS_GET_BANODE_OFFSET(sbi, banode_index) \
> + )
> +
> +#define AXFS_FSOFFSET_2_DEVOFFSET(sbi,fsoffset) \
> + (( \
> + ((sbi)->phys_start_addr == 0) && ((sbi)->virt_start_addr == 0) \
> + ) ? (fsoffset) : (fsoffset - (sbi)->mmap_size) \
> + )
> +
> +#define AXFS_GET_CBLOCK_LENGTH(sbi,cblock_index) \
> + (u64)( \
> + (u64)AXFS_GET_CBLOCK_OFFSET(sbi, ((u64)(cblock_index)+(u64)1)) \
> + - (u64)AXFS_GET_CBLOCK_OFFSET(sbi, (cblock_index)) \
> + )
> +
> +#ifndef TRUE
> +#define TRUE 1
> +#endif
> +#ifndef FALSE
> +#define FALSE 0
> +#endif
*Shrug*. That part reads scary. Are all those casts and macros really
needed? Maybe it is worth considering to clean this up a little.
WARNING: multiple messages have this Message-ID (diff)
From: Carsten Otte <cotte@de.ibm.com>
To: jaredeh@gmail.com
Cc: nickpiggin@yahoo.com.au, linux-embedded@vger.kernel.org,
"Jörn Engel" <joern@logfs.org>,
Linux-kernel@vger.kernel.org,
linux-mtd <linux-mtd@lists.infradead.org>,
tim.bird@AM.SONY.COM
Subject: Re: [PATCH 03/10] AXFS: axfs.h
Date: Thu, 21 Aug 2008 09:51:02 +0200 [thread overview]
Message-ID: <48AD1E66.40307@de.ibm.com> (raw)
In-Reply-To: <48AD00E6.2070505@gmail.com>
Jared Hulbert wrote:
> +#define AXFS_GET_BYTETABLE_VAL(desc,index) \
> + axfs_bytetable_stitch(((struct axfs_region_desc)(desc)).table_byte_depth,\
> + (u8 *)((struct axfs_region_desc)(desc)).virt_addr, index)
> +
> +#define AXFS_GET_NODE_TYPE(sbi,node_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->node_type,\
> + (node_index))
> +
> +#define AXFS_GET_NODE_INDEX(sbi,node__index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->node_index,\
> + (node__index))
> +
> +#define AXFS_IS_NODE_XIP(sbi,node_index) \
> + (AXFS_GET_NODE_TYPE(sbi, (node_index)) == XIP)
> +
> +#define AXFS_GET_CNODE_INDEX(sbi,node_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->cnode_index,\
> + (node_index))
> +
> +#define AXFS_GET_CNODE_OFFSET(desc,node_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->cnode_offset,\
> + (node_index))
> +
> +#define AXFS_GET_BANODE_OFFSET(desc,node_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->banode_offset,\
> + (node_index))
> +
> +#define AXFS_GET_CBLOCK_OFFSET(desc,node_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->cblock_offset,\
> + (node_index))
> +
> +#define AXFS_GET_INODE_FILE_SIZE(sbi,inode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->inode_file_size,\
> + (inode_index))
> +
> +#define AXFS_GET_INODE_NAME_OFFSET(sbi,inode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->inode_name_offset,\
> + (inode_index))
> +
> +#define AXFS_GET_INODE_NUM_ENTRIES(sbi,inode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->inode_num_entries,\
> + (inode_index))
> +
> +#define AXFS_GET_INODE_MODE_INDEX(sbi,inode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->inode_mode_index,\
> + (inode_index))
> +
> +#define AXFS_GET_INODE_ARRAY_INDEX(sbi,inode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->inode_array_index,\
> + (inode_index))
> +
> +#define AXFS_GET_MODE(sbi,mode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->modes,\
> + (AXFS_GET_INODE_MODE_INDEX(sbi, (mode_index))))
> +
> +#define AXFS_GET_UID(sbi,mode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->uids,\
> + (AXFS_GET_INODE_MODE_INDEX(sbi, (mode_index))))
> +
> +#define AXFS_GET_GID(sbi,mode_index) \
> + AXFS_GET_BYTETABLE_VAL(((struct axfs_super *)(sbi))->gids,\
> + (AXFS_GET_INODE_MODE_INDEX(sbi, (mode_index))))
> +
> +#define AXFS_IS_REGION_COMPRESSED(_region) \
> + (( \
> + ((struct axfs_region_desc *)(_region))->compressed_size > \
> + 0 \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_PHYSADDR_IS_VALID(sbi) \
> + (((((struct axfs_super *)(sbi))->phys_start_addr) > 0 \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_VIRTADDR_IS_VALID(sbi) \
> + (((((struct axfs_super *)(sbi))->virt_start_addr) > 0 \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_IS_IOMEM(sbi) \
> + (((((struct axfs_super *)(sbi))->iomem_size) > 0) ? TRUE : FALSE)
> +
> +#define AXFS_IS_POINTED(sbi) \
> + (((((struct axfs_super *)(sbi))->mtd_pointed) > 0) ? TRUE : FALSE)
> +
> +#define AXFS_IS_PHYSMEM(sbi) \
> + (( \
> + AXFS_PHYSADDR_IS_VALID(sbi) \
> + && !AXFS_IS_IOMEM(sbi) \
> + && !AXFS_IS_POINTED(sbi) \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_IS_MMAPABLE(sbi,offset) \
> + ((\
> + (((struct axfs_super *)(sbi))->mmap_size) > (offset) \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_IS_OFFSET_MMAPABLE(sbi,offset) \
> + (( \
> + AXFS_IS_MMAPABLE(sbi, offset) && AXFS_VIRTADDR_IS_VALID(sbi) \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_IS_REGION_MMAPABLE(sbi,_region) \
> + (( \
> + AXFS_IS_MMAPABLE(sbi, ((struct axfs_region_desc *)(_region))->fsoffset) \
> + && AXFS_VIRTADDR_IS_VALID(sbi) \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_IS_REGION_INCORE(_region) \
> + (((_region)->incore > 0) ? TRUE : FALSE)
> +
> +#define AXFS_IS_REGION_XIP(sbi,_region) \
> + (( \
> + !AXFS_IS_REGION_COMPRESSED(_region) && \
> + !AXFS_IS_REGION_INCORE(_region) && \
> + AXFS_IS_REGION_MMAPABLE(sbi,_region) \
> + ) ? TRUE : FALSE)
> +
> +#define AXFS_GET_XIP_REGION_PHYSADDR(sbi) \
> + (unsigned long)((sbi)->phys_start_addr + (sbi)->xip.fsoffset)
> +
> +#define AXFS_GET_INODE_NAME(sbi,inode_index) \
> + (char *)( \
> + (sbi)->strings.virt_addr \
> + + AXFS_GET_INODE_NAME_OFFSET(sbi,inode_index) \
> + )
> +
> +#define AXFS_GET_CBLOCK_ADDRESS(sbi, cnode_index)\
> + (unsigned long)( \
> + (sbi)->compressed.virt_addr \
> + + AXFS_GET_CBLOCK_OFFSET(sbi, cnode_index) \
> + )
> +
> +#define AXFS_GET_NODE_ADDRESS(sbi,node__index) \
> + (unsigned long)( \
> + (sbi)->node_index.virt_addr \
> + + AXFS_GET_NODE_INDEX(sbi, node__index) \
> + )
> +
> +#define AXFS_GET_BANODE_ADDRESS(sbi,banode_index) \
> + (unsigned long)( \
> + (sbi)->byte_aligned.virt_addr \
> + + AXFS_GET_BANODE_OFFSET(sbi, banode_index) \
> + )
> +
> +#define AXFS_FSOFFSET_2_DEVOFFSET(sbi,fsoffset) \
> + (( \
> + ((sbi)->phys_start_addr == 0) && ((sbi)->virt_start_addr == 0) \
> + ) ? (fsoffset) : (fsoffset - (sbi)->mmap_size) \
> + )
> +
> +#define AXFS_GET_CBLOCK_LENGTH(sbi,cblock_index) \
> + (u64)( \
> + (u64)AXFS_GET_CBLOCK_OFFSET(sbi, ((u64)(cblock_index)+(u64)1)) \
> + - (u64)AXFS_GET_CBLOCK_OFFSET(sbi, (cblock_index)) \
> + )
> +
> +#ifndef TRUE
> +#define TRUE 1
> +#endif
> +#ifndef FALSE
> +#define FALSE 0
> +#endif
*Shrug*. That part reads scary. Are all those casts and macros really
needed? Maybe it is worth considering to clean this up a little.
next prev parent reply other threads:[~2008-08-21 7:51 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-21 5:45 [PATCH 03/10] AXFS: axfs.h Jared Hulbert
2008-08-21 5:45 ` Jared Hulbert
2008-08-21 7:51 ` Carsten Otte [this message]
2008-08-21 7:51 ` Carsten Otte
2008-08-21 11:31 ` Arnd Bergmann
2008-08-21 11:31 ` Arnd Bergmann
2008-08-21 20:05 ` Jared Hulbert
2008-08-21 20:05 ` Jared Hulbert
2008-08-21 12:24 ` Arnd Bergmann
2008-08-21 12:24 ` Arnd Bergmann
2008-08-21 22:40 ` Jared Hulbert
2008-08-21 22:40 ` Jared Hulbert
2008-08-22 11:27 ` Arnd Bergmann
2008-08-22 11:27 ` Arnd Bergmann
2008-08-22 12:04 ` Geert Uytterhoeven
2008-08-22 12:04 ` Geert Uytterhoeven
2008-08-22 12:04 ` Geert Uytterhoeven
2008-08-22 18:12 ` Jared Hulbert
2008-08-22 18:12 ` Jared Hulbert
2008-08-21 13:10 ` Daniel Walker
2008-08-21 13:10 ` Daniel Walker
2008-08-21 20:07 ` Jared Hulbert
2008-08-21 20:07 ` Jared Hulbert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48AD1E66.40307@de.ibm.com \
--to=cotte@de.ibm.com \
--cc=Linux-kernel@vger.kernel.org \
--cc=carsteno@de.ibm.com \
--cc=jaredeh@gmail.com \
--cc=joern@logfs.org \
--cc=linux-embedded@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=nickpiggin@yahoo.com.au \
--cc=tim.bird@AM.SONY.COM \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.