1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 /* 28 * ASSERTION: Declaration of the different data types within a struct and 29 * their definitions in a later clause should work fine. 30 * 31 * SECTION: Structs and Unions/Structs 32 * 33 * NOTES: The floats, doubles and strings have not been implemented yet. 34 * When they do, appropriate lines in the code below should be uncommented. 35 * Similarly, the lines with the kmem_flags pointer assignment should be 36 * uncommented when the issues pertaining to it are clarified. 37 * 38 */ 39 #pragma D option quiet 40 41 struct record { 42 char new_char; 43 short new_short; 44 int new_int; 45 long new_long; 46 long long new_long_long; 47 int8_t new_int8; 48 int16_t new_int16; 49 int32_t new_int32; 50 int64_t new_int64; 51 intptr_t new_intptr; 52 uint8_t new_uint8; 53 uint16_t new_uint16; 54 uint32_t new_uint32; 55 uint64_t new_uint64; 56 uintptr_t new_uintptr; 57 58 /* 59 float new_float; 60 double new_double; 61 long double new_long_double; 62 63 string new_string; 64 */ 65 66 struct { 67 char ch; 68 int in; 69 long lg; 70 } new_struct; 71 72 union { 73 char ch; 74 int in; 75 long lg; 76 } new_union; 77 78 enum colors { 79 RED, 80 GREEN, 81 BLUE 82 } new_enum; 83 84 85 int *pointer; 86 } var; 87 88 /* 89 var.pointer = &`kmem_flags; 90 */ 91 BEGIN 92 { 93 var.new_char = 'c'; 94 var.new_short = 10; 95 var.new_int = 100; 96 var.new_long = 1234567890; 97 var.new_long_long = 1234512345; 98 var.new_int8 = 'p'; 99 var.new_int16 = 20; 100 var.new_int32 = 200; 101 var.new_int64 = 2000000; 102 var.new_intptr = 0x12345; 103 var.new_uint8 = 'q'; 104 var.new_uint16 = 30; 105 var.new_uint32 = 300; 106 var.new_uint64 = 3000000; 107 var.new_uintptr = 0x67890; 108 109 /* var.new_float = 1.23456; 110 var.new_double = 2.34567890; 111 var.new_long_double = 3.567890123; 112 113 var.new_string = "hello"; 114 */ 115 116 /* 117 var.pointer = &`kmem_flags; 118 */ 119 120 var.new_struct.ch = 'c'; 121 var.new_struct.in = 4; 122 var.new_struct.lg = 4; 123 124 var.new_union.ch = 'd'; 125 var.new_union.in = 5; 126 var.new_union.lg = 5; 127 128 this->var = var; 129 130 exit(0); 131 } 132