Home | History | Annotate | Download | only in tests
      1 /*
      2  * Auxiliary printing function for the struct user_desc type.
      3  * Used by modify_ldt and xet_thread_area tests.
      4  *
      5  * Copyright (c) 2018 The strace developers.
      6  * All rights reserved.
      7  *
      8  * Redistribution and use in source and binary forms, with or without
      9  * modification, are permitted provided that the following conditions
     10  * are met:
     11  * 1. Redistributions of source code must retain the above copyright
     12  *    notice, this list of conditions and the following disclaimer.
     13  * 2. Redistributions in binary form must reproduce the above copyright
     14  *    notice, this list of conditions and the following disclaimer in the
     15  *    documentation and/or other materials provided with the distribution.
     16  * 3. The name of the author may not be used to endorse or promote products
     17  *    derived from this software without specific prior written permission.
     18  *
     19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29  */
     30 
     31 #include "tests.h"
     32 
     33 #ifdef HAVE_STRUCT_USER_DESC
     34 
     35 # include <asm/ldt.h>
     36 
     37 /**
     38  * Print user_desc structure.
     39  *
     40  * @param us        Pointer to struct user_desc to print.
     41  * @param entry_str If not NULL, the string is printed as a value of
     42  *                  entry_number field.
     43  */
     44 static void
     45 print_user_desc(struct user_desc *us, const char *entry_str)
     46 {
     47 	if (entry_str)
     48 		printf("{entry_number=%s", entry_str);
     49 	else
     50 		printf("{entry_number=%u", us->entry_number);
     51 
     52 	printf(", base_addr=%#08x"
     53 	       ", limit=%#08x"
     54 	       ", seg_32bit=%u"
     55 	       ", contents=%u"
     56 	       ", read_exec_only=%u"
     57 	       ", limit_in_pages=%u"
     58 	       ", seg_not_present=%u"
     59 	       ", useable=%u"
     60 # ifdef __x86_64__
     61 	       ", lm=%u"
     62 # endif
     63 	       "}",
     64 	       us->base_addr,
     65 	       us->limit,
     66 	       us->seg_32bit,
     67 	       us->contents,
     68 	       us->read_exec_only,
     69 	       us->limit_in_pages,
     70 	       us->seg_not_present,
     71 	       us->useable
     72 # ifdef __x86_64__
     73 	       , us->lm
     74 # endif
     75 	       );
     76 }
     77 
     78 #endif /* HAVE_STRUCT_USER_DESC */
     79