personalityflag.c (1896B)
1 // $Id$ --*- c -*-- 2 3 // Copyright (C) 2004 Enrico Scholz <ensc@delenn.intern.sigma-chemnitz.de> 4 // 5 // This program is free software; you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation; version 2 of the License. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program; if not, write to the Free Software 16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 18 19 #ifdef HAVE_CONFIG_H 20 # include <config.h> 21 #endif 22 23 #include "vserver.h" 24 #include "internal.h" 25 #include <lib_internal/util-dimof.h> 26 #include <linux/personality.h> 27 28 #define DECL(VAL) { #VAL, sizeof(#VAL)-1, (VAL) } 29 30 static struct Mapping_uint32 const VALUES[] = { 31 #if HAVE_DECL_MMAP_PAGE_ZERO 32 DECL(MMAP_PAGE_ZERO), 33 #endif 34 35 #if HAVE_DECL_ADDR_LIMIT_32BIT 36 DECL(ADDR_LIMIT_32BIT), 37 #endif 38 39 #if HAVE_DECL_SHORT_INODE 40 DECL(SHORT_INODE), 41 #endif 42 43 #if HAVE_DECL_WHOLE_SECONDS 44 DECL(WHOLE_SECONDS), 45 #endif 46 47 #if HAVE_DECL_STICKY_TIMEOUTS 48 DECL(STICKY_TIMEOUTS), 49 #endif 50 51 #if HAVE_DECL_ADDR_LIMIT_3GB 52 DECL(ADDR_LIMIT_3GB), 53 #endif 54 55 #if HAVE_DECL_UNAME26 56 DECL(UNAME26), 57 #endif 58 }; 59 60 uint_least32_t 61 vc_text2personalityflag(char const *str, size_t len) 62 { 63 ssize_t idx = utilvserver_value2text_uint32(str, len, 64 VALUES, DIM_OF(VALUES)); 65 66 if (idx==-1) return 0; 67 else return VALUES[idx].val; 68 } 69 70 char const * 71 vc_lopersonality2text(uint_least32_t *val) 72 { 73 ssize_t idx = utilvserver_text2value_uint32(val, VALUES, 74 DIM_OF(VALUES)); 75 76 if (idx==-1) return 0; 77 else return VALUES[idx].id; 78 } 79 80