usr/src/cmd/zonecfg/zonecfg_grammar.y
changeset 3247 e05001c14ea2
parent 2712 f74a135872bc
child 3448 aaf16568054b
--- a/usr/src/cmd/zonecfg/zonecfg_grammar.y	Thu Dec 14 12:37:58 2006 -0800
+++ b/usr/src/cmd/zonecfg/zonecfg_grammar.y	Thu Dec 14 13:35:17 2006 -0800
@@ -60,15 +60,17 @@
 %token COMMIT REVERT EXIT SEMICOLON TOKEN ZONENAME ZONEPATH AUTOBOOT POOL NET
 %token FS IPD ATTR DEVICE RCTL SPECIAL RAW DIR OPTIONS TYPE ADDRESS PHYSICAL
 %token NAME MATCH PRIV LIMIT ACTION VALUE EQUAL OPEN_SQ_BRACKET CLOSE_SQ_BRACKET
-%token OPEN_PAREN CLOSE_PAREN COMMA DATASET LIMITPRIV BOOTARGS BRAND
+%token OPEN_PAREN CLOSE_PAREN COMMA DATASET LIMITPRIV BOOTARGS BRAND PSET
+%token MCAP NCPUS IMPORTANCE SHARES MAXLWPS MAXSHMMEM MAXSHMIDS MAXMSGIDS
+%token MAXSEMIDS LOCKED SWAP SCHED CLEAR
 
 %type <strval> TOKEN EQUAL OPEN_SQ_BRACKET CLOSE_SQ_BRACKET
     property_value OPEN_PAREN CLOSE_PAREN COMMA simple_prop_val
 %type <complex> complex_piece complex_prop_val
-%type <ival> resource_type NET FS IPD DEVICE RCTL ATTR
+%type <ival> resource_type NET FS IPD DEVICE RCTL ATTR DATASET PSET MCAP
 %type <ival> property_name SPECIAL RAW DIR OPTIONS TYPE ADDRESS PHYSICAL NAME
     MATCH ZONENAME ZONEPATH AUTOBOOT POOL LIMITPRIV BOOTARGS VALUE PRIV LIMIT
-    ACTION BRAND
+    ACTION BRAND SCHED
 %type <cmd> command
 %type <cmd> add_command ADD
 %type <cmd> cancel_command CANCEL
@@ -84,6 +86,7 @@
 %type <cmd> revert_command REVERT
 %type <cmd> select_command SELECT
 %type <cmd> set_command SET
+%type <cmd> clear_command CLEAR
 %type <cmd> verify_command VERIFY
 %type <cmd> terminator
 
@@ -126,6 +129,7 @@
 
 command: add_command
 	| cancel_command
+	| clear_command
 	| create_command
 	| commit_command
 	| delete_command
@@ -465,6 +469,69 @@
 		$$->cmd_res_type = RT_BOOTARGS;
 		$$->cmd_prop_nv_pairs = 0;
 	}
+	|	INFO SCHED
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &info_func;
+		$$->cmd_res_type = RT_SCHED;
+		$$->cmd_prop_nv_pairs = 0;
+	}
+	|	INFO SHARES
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &info_func;
+		$$->cmd_res_type = RT_SHARES;
+		$$->cmd_prop_nv_pairs = 0;
+	}
+	|	INFO MAXLWPS
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &info_func;
+		$$->cmd_res_type = RT_MAXLWPS;
+		$$->cmd_prop_nv_pairs = 0;
+	}
+	|	INFO MAXSHMMEM
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &info_func;
+		$$->cmd_res_type = RT_MAXSHMMEM;
+		$$->cmd_prop_nv_pairs = 0;
+	}
+	|	INFO MAXSHMIDS
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &info_func;
+		$$->cmd_res_type = RT_MAXSHMIDS;
+		$$->cmd_prop_nv_pairs = 0;
+	}
+	|	INFO MAXMSGIDS
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &info_func;
+		$$->cmd_res_type = RT_MAXMSGIDS;
+		$$->cmd_prop_nv_pairs = 0;
+	}
+	|	INFO MAXSEMIDS
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &info_func;
+		$$->cmd_res_type = RT_MAXSEMIDS;
+		$$->cmd_prop_nv_pairs = 0;
+	}
 	|	INFO resource_type property_name EQUAL property_value
 	{
 		if (($$ = alloc_cmd()) == NULL)
@@ -512,10 +579,31 @@
 		usage(FALSE, HELP_RES_PROPS);
 		YYERROR;
 	}
+	| REMOVE TOKEN
+	{
+		short_usage(CMD_REMOVE);
+		(void) fputs("\n", stderr);
+		usage(FALSE, HELP_RES_PROPS);
+		YYERROR;
+	}
 	| REMOVE resource_type
 	{
-		short_usage(CMD_REMOVE);
-		YYERROR;
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &remove_func;
+		$$->cmd_res_type = $2;
+	}
+	| REMOVE TOKEN resource_type
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &remove_func;
+		$$->cmd_res_type = $3;
+		$$->cmd_argc = 1;
+		$$->cmd_argv[0] = $2;
+		$$->cmd_argv[1] = NULL;
 	}
 	| REMOVE property_name property_value
 	{
@@ -594,6 +682,22 @@
 		usage(FALSE, HELP_RES_PROPS);
 		YYERROR;
 	}
+	| SELECT PSET
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &select_func;
+		$$->cmd_res_type = RT_DCPU;
+	}
+	| SELECT MCAP
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &select_func;
+		$$->cmd_res_type = RT_MCAP;
+	}
 	| SELECT resource_type
 	{
 		short_usage(CMD_SELECT);
@@ -682,6 +786,22 @@
 		$$->cmd_property_ptr[0] = &property[0];
 	}
 
+clear_command: CLEAR
+	{
+		short_usage(CMD_CLEAR);
+		(void) fputs("\n", stderr);
+		usage(FALSE, HELP_PROPS);
+		YYERROR;
+	}
+	| CLEAR property_name
+	{
+		if (($$ = alloc_cmd()) == NULL)
+			YYERROR;
+		cmd = $$;
+		$$->cmd_handler = &clear_func;
+		$$->cmd_res_type = $2;
+	}
+
 verify_command: VERIFY
 	{
 		if (($$ = alloc_cmd()) == NULL)
@@ -709,6 +829,8 @@
 	| RCTL		{ $$ = RT_RCTL; }
 	| ATTR		{ $$ = RT_ATTR; }
 	| DATASET	{ $$ = RT_DATASET; }
+	| PSET		{ $$ = RT_DCPU; }
+	| MCAP		{ $$ = RT_MCAP; }
 
 property_name: SPECIAL	{ $$ = PT_SPECIAL; }
 	| RAW		{ $$ = PT_RAW; }
@@ -730,6 +852,17 @@
 	| LIMIT		{ $$ = PT_LIMIT; }
 	| ACTION	{ $$ = PT_ACTION; }
 	| BRAND		{ $$ = PT_BRAND; }
+	| NCPUS		{ $$ = PT_NCPUS; }
+	| LOCKED	{ $$ = PT_LOCKED; }
+	| SWAP		{ $$ = PT_SWAP; }
+	| IMPORTANCE	{ $$ = PT_IMPORTANCE; }
+	| SHARES	{ $$ = PT_SHARES; }
+	| MAXLWPS	{ $$ = PT_MAXLWPS; }
+	| MAXSHMMEM	{ $$ = PT_MAXSHMMEM; }
+	| MAXSHMIDS	{ $$ = PT_MAXSHMIDS; }
+	| MAXMSGIDS	{ $$ = PT_MAXMSGIDS; }
+	| MAXSEMIDS	{ $$ = PT_MAXSEMIDS; }
+	| SCHED		{ $$ = PT_SCHED; }
 
 /*
  * The grammar builds data structures from the bottom up.  Thus various