Hello. Thank you for your comment. James Morris wrote:I don't need to use spinlocks here. What I need to do here is avoid read/write reordering, so mb() will be appropriate here. struct something { struct something *next; void *data; }; struct something *prev_ptr = ...; struct something *new_ptr = kmalloc(sizeof(*new_ptr), GFP_KERNEL); new_ptr->next = NULL; new_ptr->data = some_value; mb(); prev_ptr->next = new_ptr; TOMOYO Linux doesn't use locks for reading singly-linked list. Thus, new_ptr->data has to be made visible to other CPUs before new_ptr is appended at the tail of singly-linked list. Otherwise, other CPU may read undefined new_ptr->data values. Performance is not critical because this mb() is called only when appending new entry to the singly-linked list. Since new_ptr never be removed, new_ptr needn't to know it's previous element's address, thus having only ->next pointer is enough. new_ptr->next is assigned *only once* (initialized with NULL, and assigned non-NULL later), indicating "if ptr->next == NULL, ptr is the last element" and "if ptr->next != NULL, ptr is not the last element". If I use "struct hlist_node" which has two pointers, it needs more memory than "struct something" which has one pointer. It is possible to use API defined in include/linux/list.h , but to reduce memory usage, I dare not use these API. Singly-linked list's rule in TOMOYO Linux is quite simple, "ptr->next is NULL if the last element" and "non-NULL if not". Regards. -
| Linus Torvalds | Linux 2.6.27-rc8 |
| Greg KH | [patch 00/71] 2.6.26-stable review |
| Dmitry Torokhov | 2.6.27-rc8+ - first impressions |
| jimmy bahuleyan | Re: Hibernation considerations |
git: | |
| Petr Baudis | [FYI][PATCH] Customizing the WinGit installer |
| Jan Hudec | Re: [PATCH] Move all dashed form git commands to libexecdir |
| Jay Soffian | Re: [PATCH] gitweb: Support caching projects list |
| Mark Levedahl | Allowing override of the default "origin" nickname |
| Richard Stallman | Real men don't attack straw men |
| Leon Dippenaar | New tcp stack attack |
| Luca Dell'Oca | Authenticate squid in Active Directory |
| Todd Pytel | IDE or SCSI virtual disks for VMWare image? |
| Jarek Poplawski | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Matthew Dharm | Re: [RFC] Patch to option HSO driver to the kernel |
| Ingo Molnar | Re: [bug] stuck localhost TCP connections, v2.6.26-rc3+ |
| David Miller | Re: [GIT PULL] [IPV6] COMPAT: Fix SSM applications on 64bit kernels. |
