vshost-util-vserver

Build script and sources for util-vserver.
git clone https://ccx.te2000.cz/git/vshost-util-vserver
Log | Files | Refs

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