1
1
/****************************************************************************
3
3
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4
** All rights reserved.
4
5
** Contact: Nokia Corporation (qt-info@nokia.com)
6
7
** This file is part of the QtCore module of the Qt Toolkit.
8
9
** $QT_BEGIN_LICENSE:LGPL$
10
** Licensees holding valid Qt Commercial licenses may use this file in
11
** accordance with the Qt Commercial License Agreement provided with the
12
** Software or, alternatively, in accordance with the terms contained in
13
** a written agreement between you and Nokia.
10
** No Commercial Usage
11
** This file contains pre-release code and may not be distributed.
12
** You may use this file in accordance with the terms and conditions
13
** contained in the Technology Preview License Agreement accompanying
15
16
** GNU Lesser General Public License Usage
16
17
** Alternatively, this file may be used under the terms of the GNU Lesser
20
21
** ensure the GNU Lesser General Public License version 2.1 requirements
21
22
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23
** In addition, as a special exception, Nokia gives you certain
24
** additional rights. These rights are described in the Nokia Qt LGPL
25
** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
28
** GNU General Public License Usage
29
** Alternatively, this file may be used under the terms of the GNU
30
** General Public License version 3.0 as published by the Free Software
31
** Foundation and appearing in the file LICENSE.GPL included in the
32
** packaging of this file. Please review the following information to
33
** ensure the GNU General Public License version 3.0 requirements will be
34
** met: http://www.gnu.org/copyleft/gpl.html.
36
** If you are unsure which license is appropriate for your use, please
37
** contact the sales department at http://www.qtsoftware.com/contact.
24
** In addition, as a special exception, Nokia gives you certain additional
25
** rights. These rights are described in the Nokia Qt LGPL Exception
26
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28
** If you have questions regarding the use of this file, please contact
29
** Nokia at qt-info@nokia.com.
38
38
** $QT_END_LICENSE$
40
40
****************************************************************************/
123
122
operations that were not released. Thus if the process acquires a
124
123
resource and then exits without releasing it, Unix will release that
126
\o Symbian: QSystemSemaphore behaves the same as Windows semaphores.
127
In other words, the operating system owns the semaphore and ignores
128
QSystemSemaphore::AccessMode.
128
132
\sa QSharedMemory, QSemaphore
147
151
creates a new semaphore for that key and sets its resource count to
150
In Windows, \a mode is ignored, and the system always tries to
154
In Windows and in Symbian, \a mode is ignored, and the system always tries to
151
155
create a semaphore for the specified \a key. If the system does not
152
156
already have a semaphore identified as \a key, it creates the
153
157
semaphore and sets its resource count to \a initialValue. But if the
165
169
\sa acquire(), key()
167
171
QSystemSemaphore::QSystemSemaphore(const QString &key, int initialValue, AccessMode mode)
172
: d(new QSystemSemaphorePrivate)
169
d = new QSystemSemaphorePrivate;
170
174
setKey(key, initialValue, mode);
198
201
enable handling the problem in Unix implementations of semaphores
199
202
that survive a crash. In Unix, when a semaphore survives a crash, we
200
203
need a way to force it to reset its resource count, when the system
201
reuses the semaphore. In Windows, where semaphores can't survive a
204
reuses the semaphore. In Windows and in Symbian, where semaphores can't survive a
202
205
crash, this enum has no effect.
204
207
\value Open If the semaphore already exists, its initial resource
211
214
This value should be passed to the constructor, when the first
212
215
semaphore for a particular key is constructed and you know that if
213
216
the semaphore already exists it could only be because of a crash. In
214
Windows, where a semaphore can't survive a crash, Create and Open
217
Windows and in Symbian, where a semaphore can't survive a crash, Create and Open
215
218
have the same behavior.
232
235
d->error = NoError;
233
236
d->errorString = QString();
237
#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
235
238
// optimization to not destroy/create the file & semaphore
236
239
if (key == d->key && mode == Create && d->createdSemaphore && d->createdFile) {
237
240
d->initialValue = initialValue;