From: Cyril Hrubis <chrubis@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH] syscalls: ulimit01; Convert to the new library
Date: Wed, 4 Mar 2026 15:44:24 +0100 [thread overview]
Message-ID: <20260304144424.10101-1-chrubis@suse.cz> (raw)
Linux does not implement UL_GMEMLIM, UL_GDESLIM and UL_GSHMEMLIM so we
keep only the UL_GETFSIZE and UL_SETFSIZE.
Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
---
testcases/kernel/syscalls/ulimit/README | 4 -
testcases/kernel/syscalls/ulimit/ulimit01.c | 267 ++------------------
2 files changed, 21 insertions(+), 250 deletions(-)
delete mode 100644 testcases/kernel/syscalls/ulimit/README
diff --git a/testcases/kernel/syscalls/ulimit/README b/testcases/kernel/syscalls/ulimit/README
deleted file mode 100644
index 87fa0d234..000000000
--- a/testcases/kernel/syscalls/ulimit/README
+++ /dev/null
@@ -1,4 +0,0 @@
-Warning: This routine is obsolete. The include file is no
- longer provided by glibc. Use getrlimit(2), setrlimit(2)
- and sysconf(3) instead. For the shell command ulimit, see
- bash(1).
diff --git a/testcases/kernel/syscalls/ulimit/ulimit01.c b/testcases/kernel/syscalls/ulimit/ulimit01.c
index 74dea91cd..31c89b4c2 100644
--- a/testcases/kernel/syscalls/ulimit/ulimit01.c
+++ b/testcases/kernel/syscalls/ulimit/ulimit01.c
@@ -1,260 +1,35 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of version 2 of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it would be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Further, this software is distributed without any warranty that it is
- * free of the rightful claim of any third person regarding infringement
- * or the like. Any license provided herein, whether implied or
- * otherwise, applies only to this software file. Patent licenses, if
- * any, provided herein do not apply to combinations of this program with
- * other software, or any other product whatsoever.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
- * Mountain View, CA 94043, or:
- *
- * http://www.sgi.com
- *
- * For further information regarding this notice, see:
- *
- * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
+ * Copyright (c) Linux Test Project, 2024
+ * Copyright (c) 2026 Cyril Hrubis <chrubis@suse.cz>
*/
-/* $Id: ulimit01.c,v 1.6 2009/11/02 13:57:19 subrata_modak Exp $ */
-/**********************************************************
- *
- * OS Test - Silicon Graphics, Inc.
- *
- * TEST IDENTIFIER : ulimit01
- *
- * EXECUTED BY : anyone
- *
- * TEST TITLE : Basic test for ulimit(2)
- *
- * PARENT DOCUMENT : usctpl01
- *
- * TEST CASE TOTAL : 6
- *
- * WALL CLOCK TIME : 1
- *
- * CPU TYPES : ALL
- *
- * AUTHOR : William Roske
- *
- * CO-PILOT : Dave Fenner
- *
- * DATE STARTED : 03/30/92
- *
- * INITIAL RELEASE : UNICOS 7.0
- *
- * TEST CASES
- *
- * 1.) ulimit(2) returns...(See Description)
- *
- * INPUT SPECIFICATIONS
- * The standard options for system call tests are accepted.
- * (See the parse_opts(3) man page).
- *
- * OUTPUT SPECIFICATIONS
- *$
- * DURATION
- * Terminates - with frequency and infinite modes.
- *
- * SIGNALS
- * Uses SIGUSR1 to pause before test if option set.
- * (See the parse_opts(3) man page).
- *
- * RESOURCES
- * None
- *
- * ENVIRONMENTAL NEEDS
- * The libcuts.a and libsys.a libraries must be included in
- * the compilation of this test.
- *
- * SPECIAL PROCEDURAL REQUIREMENTS
- * None
- *
- * INTERCASE DEPENDENCIES
- * None
- *
- * DETAILED DESCRIPTION
- * This is a Phase I test for the ulimit(2) system call. It is intended
- * to provide a limited exposure of the system call, for now. It
- * should/will be extended when full functional tests are written for
- * ulimit(2).
- *
- * Setup:
- * Setup signal handling.
- * Pause for SIGUSR1 if option specified.
- *
- * Test:
- * Loop if the proper options are given.
- * Execute system call
- * Check return code, if system call failed (return=-1)
- * Log the errno and Issue a FAIL message.
- * Otherwise, Issue a PASS message.
- *
- * Cleanup:
- * Print errno log and/or timing stats if options given
- *
- *
- *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#**/
-#include <ulimit.h>
-#include <errno.h>
-#include <string.h>
-#include <signal.h>
-#include "test.h"
-
-void setup();
-void cleanup();
-
-char *TCID = "ulimit01";
-int TST_TOTAL = 6;
-
-int cmd;
-long limit; /* saved limit */
-
-struct limits_t {
- int cmd;
- long newlimit;
- int nlim_flag; /* special flag for UL_SETFSIZE records */
- int exp_fail;
-} Scenarios[] = {
+/*\
+ * Tests the basic functionality of ulimit() with UL_GETFSIZE and UL_SETFSIZE.
+ */
- {
- UL_GETFSIZE, -1, 0, 0}, {
- UL_SETFSIZE, -2, 1, 0}, /* case case: must be after UL_GETFSIZE */
- {
- UL_SETFSIZE, -2, 2, 0}, /* case case: must be after UL_GETFSIZE */
-#if UL_GMEMLIM
- {
- UL_GMEMLIM, -1, 0, 0},
-#endif
-#if UL_GDESLIM
- {
- UL_GDESLIM, -1, 0, 0},
-#endif
-#if UL_GSHMEMLIM
- {
- UL_GSHMEMLIM, -1, 0, 0},
-#endif
-};
+#include <ulimit.h>
+#include "tst_test.h"
-int main(int ac, char **av)
+static void run(void)
{
- int lc;
- int i;
- int tmp;
-
- TST_TOTAL = sizeof(Scenarios) / sizeof(struct limits_t);
-
- /***************************************************************
- * parse standard options
- ***************************************************************/
- tst_parse_opts(ac, av, NULL, NULL);
-
- /***************************************************************
- * perform global setup for test
- ***************************************************************/
- setup();
-
- /***************************************************************
- * check looping state if -c option given
- ***************************************************************/
- for (lc = 0; TEST_LOOPING(lc); lc++) {
-
- tst_count = 0;
+ long current_fsize;
- for (i = 0; i < TST_TOTAL; i++) {
+ TST_EXP_POSITIVE(ulimit(UL_GETFSIZE, -1));
- cmd = Scenarios[i].cmd;
- limit = Scenarios[i].newlimit;
+ if (!TST_PASS)
+ return;
- /*
- * Call ulimit(2)
- */
- TEST(ulimit(cmd, limit));
+ current_fsize = TST_RET;
- /* check return code */
- if (TEST_RETURN == -1) {
- if (Scenarios[i].exp_fail) {
- tst_resm(TPASS | TTERRNO,
- "ulimit(%d, %ld) Failed expectedly",
- cmd, limit);
- } else {
- tst_resm(TFAIL | TTERRNO,
- "ulimit(%d, %ld) Failed",
- cmd, limit);
- }
- } else {
- if (Scenarios[i].exp_fail) {
- tst_resm(TFAIL,
- "ulimit(%d, %ld) returned %ld, succeeded unexpectedly",
- cmd, limit, TEST_RETURN);
- } else {
- tst_resm(TPASS,
- "ulimit(%d, %ld) returned %ld",
- cmd, limit, TEST_RETURN);
- }
-
- /*
- * Save the UL_GETFSIZE return value in the newlimit field
- * for UL_SETFSIZE test cases.
- */
- if (cmd == UL_GETFSIZE) {
- for (tmp = i + 1; tmp < TST_TOTAL;
- tmp++) {
- if (Scenarios[tmp].nlim_flag ==
- 1) {
- Scenarios[tmp].newlimit
- = TEST_RETURN;
- }
- if (Scenarios[tmp].nlim_flag ==
- 2) {
- Scenarios[tmp].newlimit
- = TEST_RETURN - 1;
- }
- }
- }
- }
- }
- }
-
- /***************************************************************
- * cleanup and exit
- ***************************************************************/
- cleanup();
-
- tst_exit();
-}
-
-/***************************************************************
- * setup() - performs all ONE TIME setup for this test.
- ***************************************************************/
-void setup(void)
-{
-
- tst_sig(NOFORK, DEF_HANDLER, cleanup);
-
- TEST_PAUSE;
+ TST_EXP_POSITIVE(ulimit(UL_SETFSIZE, current_fsize),
+ "ulimit(UL_SETFSIZE, %ld) (same value)", current_fsize);
+ TST_EXP_POSITIVE(ulimit(UL_SETFSIZE, current_fsize - 1),
+ "ulimit(UL_SETFSIZE, %ld) (value - 1)", current_fsize - 1);
}
-/***************************************************************
- * cleanup() - performs all ONE TIME cleanup for this test at
- * completion or premature exit.
- ***************************************************************/
-void cleanup(void)
-{
-
-}
+static struct tst_test test = {
+ .test_all = run,
+};
--
2.52.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next reply other threads:[~2026-03-04 14:44 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-04 14:44 Cyril Hrubis [this message]
2026-03-04 15:09 ` [LTP] [PATCH] syscalls: ulimit01; Convert to the new library Andrea Cervesato via ltp
2026-03-06 12:54 ` Petr Vorel
2026-04-07 12:01 ` Cyril Hrubis
2026-04-08 6:52 ` Petr Vorel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260304144424.10101-1-chrubis@suse.cz \
--to=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.