On Sat, Nov 5, 2011 at 12:00 AM, Dave Hylands <dhyla...@gmail.com> wrote: > Hi Jimmy, > > On Fri, Nov 4, 2011 at 8:27 AM, Jimmy Pan <dsp...@gmail.com> 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 > > -- > Dave Hylands > Shuswap, BC, Canada > http://www.davehylands.com >
Well, I see, but what is the use of the union and structure? _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies