aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mempolicy.h
diff options
context:
space:
mode:
authorLee Schermerhorn <lee.schermerhorn@hp.com>2008-04-28 05:13:23 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-28 11:58:24 -0400
commit095f1fc4ebf36c64fddf9b6db29b1ab5517378e6 (patch)
tree39aae9d5b05d8501d1794e92c6115331c0a40848 /include/linux/mempolicy.h
parent2291990ab36b4b2d8a81b1f92e7a046e51632a60 (diff)
mempolicy: rework shmem mpol parsing and display
mm/shmem.c currently contains functions to parse and display memory policy strings for the tmpfs 'mpol' mount option. Move this to mm/mempolicy.c with the rest of the mempolicy support. With subsequent patches, we'll be able to remove knowledge of the details [mode, flags, policy, ...] completely from shmem.c 1) replace shmem_parse_mpol() in mm/shmem.c with mpol_parse_str() in mm/mempolicy.c. Rework to use the policy_types[] array [used by mpol_to_str()] to look up mode by name. 2) use mpol_to_str() to format policy for shmem_show_mpol(). mpol_to_str() expects a pointer to a struct mempolicy, so temporarily construct one. This will be replaced with a reference to a struct mempolicy in the tmpfs superblock in a subsequent patch. NOTE 1: I changed mpol_to_str() to use a colon ':' rather than an equal sign '=' as the nodemask delimiter to match mpol_parse_str() and the tmpfs/shmem mpol mount option formatting that now uses mpol_to_str(). This is a user visible change to numa_maps, but then the addition of the mode flags already changed the display. It makes sense to me to have the mounts and numa_maps display the policy in the same format. However, if anyone objects strongly, I can pass the desired nodemask delimeter as an arg to mpol_to_str(). Note 2: Like show_numa_map(), I don't check the return code from mpol_to_str(). I do use a longer buffer than the one provided by show_numa_map(), which seems to have sufficed so far. Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com> Cc: Christoph Lameter <clameter@sgi.com> Cc: David Rientjes <rientjes@google.com> Cc: Mel Gorman <mel@csn.ul.ie> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/mempolicy.h')
-rw-r--r--include/linux/mempolicy.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h
index b0fab9e80655..dcc17378c952 100644
--- a/include/linux/mempolicy.h
+++ b/include/linux/mempolicy.h
@@ -214,6 +214,13 @@ static inline void check_highest_zone(enum zone_type k)
214int do_migrate_pages(struct mm_struct *mm, 214int do_migrate_pages(struct mm_struct *mm,
215 const nodemask_t *from_nodes, const nodemask_t *to_nodes, int flags); 215 const nodemask_t *from_nodes, const nodemask_t *to_nodes, int flags);
216 216
217
218#ifdef CONFIG_TMPFS
219extern int mpol_parse_str(char *str, unsigned short *mode,
220 unsigned short *mode_flags, nodemask_t *policy_nodes);
221
222extern int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol);
223#endif
217#else 224#else
218 225
219struct mempolicy {}; 226struct mempolicy {};
@@ -313,6 +320,20 @@ static inline int do_migrate_pages(struct mm_struct *mm,
313static inline void check_highest_zone(int k) 320static inline void check_highest_zone(int k)
314{ 321{
315} 322}
323
324#ifdef CONFIG_TMPFS
325static inline int mpol_parse_str(char *value, unsigned short *policy,
326 unsigned short flags, nodemask_t *policy_nodes)
327{
328 return 1;
329}
330
331static inline int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol)
332{
333 return 0;
334}
335#endif
336
316#endif /* CONFIG_NUMA */ 337#endif /* CONFIG_NUMA */
317#endif /* __KERNEL__ */ 338#endif /* __KERNEL__ */
318 339