summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/ipc/qsystemsemaphore/acquirerelease/main.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-10-07 21:37:54 -0700
committerThiago Macieira <thiago.macieira@intel.com>2023-01-22 13:01:53 -0300
commit53e8982434923162638365c486b7f3e68f3a46dc (patch)
tree1ed2b68fda4d4df5e816b588f6086f6419e52c2d /tests/auto/corelib/ipc/qsystemsemaphore/acquirerelease/main.cpp
parent7689d4ad2f673317af432aae498da74d13703126 (diff)
IPC: Move QSharedMemory and QSystemSemaphore from kernel/ to ipc/
It's not a lot of files, but it's actually more in the same dir than mime/ does right now. I'm about to add two more files, though I'll also merge a few more later. Change-Id: Id8d5e3999fe94b03acc1fffd171bfe2ea36a35a7 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests/auto/corelib/ipc/qsystemsemaphore/acquirerelease/main.cpp')
-rw-r--r--tests/auto/corelib/ipc/qsystemsemaphore/acquirerelease/main.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/auto/corelib/ipc/qsystemsemaphore/acquirerelease/main.cpp b/tests/auto/corelib/ipc/qsystemsemaphore/acquirerelease/main.cpp
new file mode 100644
index 0000000000..b2de1d764c
--- /dev/null
+++ b/tests/auto/corelib/ipc/qsystemsemaphore/acquirerelease/main.cpp
@@ -0,0 +1,76 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#include <QCoreApplication>
+#include <QDebug>
+#include <QStringList>
+#include <QSystemSemaphore>
+
+int acquire(int count = 1)
+{
+ QSystemSemaphore sem("store");
+
+ for (int i = 0; i < count; ++i) {
+ if (!sem.acquire()) {
+ qWarning() << "Could not acquire" << sem.key();
+ return EXIT_FAILURE;
+ }
+ }
+ qDebug("done aquiring");
+ return EXIT_SUCCESS;
+}
+
+int release()
+{
+ QSystemSemaphore sem("store");
+ if (!sem.release()) {
+ qWarning() << "Could not release" << sem.key();
+ return EXIT_FAILURE;
+ }
+ qDebug("done releasing");
+ return EXIT_SUCCESS;
+}
+
+int acquirerelease()
+{
+ QSystemSemaphore sem("store");
+ if (!sem.acquire()) {
+ qWarning() << "Could not acquire" << sem.key();
+ return EXIT_FAILURE;
+ }
+ if (!sem.release()) {
+ qWarning() << "Could not release" << sem.key();
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+
+ QStringList arguments = app.arguments();
+ // binary name is not used here
+ arguments.takeFirst();
+ if (arguments.size() < 1) {
+ qWarning("Please call the helper with the function to call as argument");
+ return EXIT_FAILURE;
+ }
+ QString function = arguments.takeFirst();
+ if (function == QLatin1String("acquire")) {
+ int count = 1;
+ bool ok = true;
+ if (arguments.size())
+ count = arguments.takeFirst().toInt(&ok);
+ if (!ok)
+ count = 1;
+ return acquire(count);
+ } else if (function == QLatin1String("release")) {
+ return release();
+ } else if (function == QLatin1String("acquirerelease")) {
+ return acquirerelease();
+ } else {
+ qWarning() << "Unknown function" << function;
+ }
+ return EXIT_SUCCESS;
+}