Hi Jimmy, On Fri, Nov 4, 2011 at 9:28 AM, Jimmy Pan <dspjm1@xxxxxxxxx> wrote: > On Sat, Nov 5, 2011 at 12:00 AM, Dave Hylands <dhylands@xxxxxxxxx> wrote: >> Hi Jimmy, >> >> On Fri, Nov 4, 2011 at 8:27 AM, Jimmy Pan <dspjm1@xxxxxxxxx> wrote: >>> truct page { >>> unsigned long flags; /* Atomic flags, some possibly >>> * updated asynchronously */ >>> atomic_t _count; /* Usage count, see below. */ >>> union { >>> atomic_t _mapcount; /* Count of ptes mapped in mms, >>> * to show when page is mapped >>> * & limit reverse map searches. >>> */ >>> struct { /* SLUB */ >>> u16 inuse; >>> u16 objects; >>> }; >>> }; >>> union { >>> struct { >>> unsigned long private; /* Mapping-private opaque data: >>> * usually used for buffer_heads >>> * if PagePrivate set; used for >>> * swp_entry_t if PageSwapCache; >>> * indicates order in the buddy >>> * system if PG_buddy is set. >>> */ >>> struct address_space *mapping; /* If low bit clear, points to >>> * inode address_space, or NULL. >>> * If page mapped as anonymous >>> * memory, low bit is set, and >>> * it points to anon_vma object: >>> * see PAGE_MAPPING_ANON below. >>> */ >>> }; >>> #if USE_SPLIT_PTLOCKS >>> spinlock_t ptl; >>> #endif >>> struct kmem_cache *slab; /* SLUB: Pointer to slab */ >>> struct page *first_page; /* Compound tail pages */ >>> }; >> >> You just reference the variable as if the unnamed union weren't there >> (i.e. just like unnamed unions in C++). >> >> Here's an example from the kernel source tree: >> http://lxr.linux.no/linux+v3.1/include/linux/mm.h#L419 > Well, I see, but what is the use of the union and structure? Unions and structures are basic elements of the C language. http://en.wikipedia.org/wiki/Union_(computer_science) http://publications.gbdirect.co.uk/c_book/chapter6/unions.html -- Dave Hylands Shuswap, BC, Canada http://www.davehylands.com -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html