dans include/linux/spinlock_types.hla définition de spinlock_t dans le noyau linux
la définition de spinlock_t comme ci-dessous
typedef struct spinlock {
union {
struct raw_spinlock rlock;
struct {
u8 __padding[];
struct lockdep_map dep_map;
};
};
} spinlock_t;
pourquoi la variable "__padding []" et "dep_map" devrait mettre à l'intérieur une structure qui n'a pas de nom
mais pas seulement comme ci-dessous?
typedef struct spinlock {
union {
struct raw_spinlock rlock;
u8 __padding[];
struct lockdep_map dep_map;
};
} spinlock_t;
Y a-t-il une signification particulière?
merci
'mais pas comme ci-dessous' - Dans vos champs de code de la __padding' et 'dep_map' sont ** union ** 'ed (placé à la même adresse), alors que dans le code d'origine, ils appartiennent à simple structure, ont donc ** mise en page séquentielle **. Quant à l'absence du nom de champ de la structure, elle simplifie la référence aux champs internes: 'lock-> dep_map' au lieu de' lock-> field_name-> dep_map'. – Tsyvarev
HI Tsyvarev, votre explication très claire, merci beaucoup :) –