| Line | Source Code | Coverage |
|---|
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | | - |
| 6 | | - |
| 7 | | - |
| 8 | | - |
| 9 | | - |
| 10 | | - |
| 11 | | - |
| 12 | | - |
| 13 | | - |
| 14 | | - |
| 15 | | - |
| 16 | | - |
| 17 | | - |
| 18 | | - |
| 19 | enum { ThreadPriorityResetFlag = 0x80000000 }; | - |
| 20 | static __thread QThreadData *currentThreadData = 0; | - |
| 21 | | - |
| 22 | | - |
| 23 | static pthread_once_t current_thread_data_once = 0; | - |
| 24 | static pthread_key_t current_thread_data_key; | - |
| 25 | | - |
| 26 | static void destroy_current_thread_data(void *p) | - |
| 27 | { | - |
| 28 | pthread_setspecific(current_thread_data_key, p); | - |
| 29 | QThreadData *data = static_cast<QThreadData *>(p); | - |
| 30 | if (data->isAdopted) { evaluated: data->isAdopted| yes Evaluation Count:18 | yes Evaluation Count:1717279 |
| 18-1717279 |
| 31 | QThread *thread = data->thread; | - |
| 32 | qt_noop(); | - |
| 33 | QThreadPrivate *thread_p = static_cast<QThreadPrivate *>(QObjectPrivate::get(thread)); | - |
| 34 | qt_noop(); | - |
| 35 | thread_p->finish(thread); | - |
| 36 | } executed: }Execution Count:18 | 18 |
| 37 | data->deref(); | - |
| 38 | | - |
| 39 | | - |
| 40 | | - |
| 41 | | - |
| 42 | pthread_setspecific(current_thread_data_key, | - |
| 43 | | - |
| 44 | | - |
| 45 | | - |
| 46 | 0); | - |
| 47 | | - |
| 48 | } executed: }Execution Count:1717384 | 1717384 |
| 49 | | - |
| 50 | static void create_current_thread_data_key() | - |
| 51 | { | - |
| 52 | pthread_key_create(¤t_thread_data_key, destroy_current_thread_data); | - |
| 53 | } | 0 |
| 54 | | - |
| 55 | static void destroy_current_thread_data_key() | - |
| 56 | { | - |
| 57 | pthread_once(¤t_thread_data_once, create_current_thread_data_key); | - |
| 58 | pthread_key_delete(current_thread_data_key); | - |
| 59 | } | 0 |
| 60 | namespace { static const struct destroy_current_thread_data_key_dtor_class_ { inline destroy_current_thread_data_key_dtor_class_() { } inline ~ destroy_current_thread_data_key_dtor_class_() { destroy_current_thread_data_key(); } } destroy_current_thread_data_key_dtor_instance_; } | 0 |
| 61 | | - |
| 62 | | - |
| 63 | | - |
| 64 | static QThreadData *get_thread_data() | - |
| 65 | { | - |
| 66 | | - |
| 67 | return currentThreadData; executed: return currentThreadData;Execution Count:18568914 | 18568914 |
| 68 | | - |
| 69 | | - |
| 70 | | - |
| 71 | | - |
| 72 | } | - |
| 73 | | - |
| 74 | static void set_thread_data(QThreadData *data) | - |
| 75 | { | - |
| 76 | | - |
| 77 | currentThreadData = data; | - |
| 78 | | - |
| 79 | pthread_once(¤t_thread_data_once, create_current_thread_data_key); | - |
| 80 | pthread_setspecific(current_thread_data_key, data); | - |
| 81 | } executed: }Execution Count:1717404 | 1717404 |
| 82 | | - |
| 83 | static void clear_thread_data() | - |
| 84 | { | - |
| 85 | | - |
| 86 | currentThreadData = 0; | - |
| 87 | | - |
| 88 | pthread_setspecific(current_thread_data_key, 0); | - |
| 89 | } | 0 |
| 90 | | - |
| 91 | QThreadData *QThreadData::current() | - |
| 92 | { | - |
| 93 | QThreadData *data = get_thread_data(); | - |
| 94 | if (!data) { evaluated: !data| yes Evaluation Count:18 | yes Evaluation Count:18568978 |
| 18-18568978 |
| 95 | data = new QThreadData; | - |
| 96 | try { | - |
| 97 | set_thread_data(data); | - |
| 98 | data->thread = new QAdoptedThread(data); | - |
| 99 | } catch (...) { executed: }Execution Count:18 | 18 |
| 100 | clear_thread_data(); | - |
| 101 | data->deref(); | - |
| 102 | data = 0; | - |
| 103 | throw; | 0 |
| 104 | } | - |
| 105 | data->deref(); | - |
| 106 | data->isAdopted = true; | - |
| 107 | data->threadId = (Qt::HANDLE)pthread_self(); | - |
| 108 | if (!QCoreApplicationPrivate::theMainThread) partially evaluated: !QCoreApplicationPrivate::theMainThread| no Evaluation Count:0 | yes Evaluation Count:18 |
| 0-18 |
| 109 | QCoreApplicationPrivate::theMainThread = data->thread; never executed: QCoreApplicationPrivate::theMainThread = data->thread; | 0 |
| 110 | } executed: }Execution Count:18 | 18 |
| 111 | return data; executed: return data;Execution Count:18569006 | 18569006 |
| 112 | } | - |
| 113 | | - |
| 114 | | - |
| 115 | void QAdoptedThread::init() | - |
| 116 | { | - |
| 117 | QThreadPrivate * const d = d_func(); | - |
| 118 | d->thread_id = pthread_self(); | - |
| 119 | } executed: }Execution Count:18 | 18 |
| 120 | | - |
| 121 | | - |
| 122 | | - |
| 123 | | - |
| 124 | | - |
| 125 | | - |
| 126 | extern "C" { | - |
| 127 | | - |
| 128 | | - |
| 129 | typedef void*(*QtThreadCallback)(void*); | - |
| 130 | | - |
| 131 | | - |
| 132 | } | - |
| 133 | | - |
| 134 | | - |
| 135 | | - |
| 136 | | - |
| 137 | void QThreadPrivate::createEventDispatcher(QThreadData *data) | - |
| 138 | { | - |
| 139 | | - |
| 140 | | - |
| 141 | | - |
| 142 | | - |
| 143 | if (qEnvironmentVariableIsEmpty("QT_NO_GLIB") partially evaluated: qEnvironmentVariableIsEmpty("QT_NO_GLIB")| yes Evaluation Count:1717390 | no Evaluation Count:0 |
| 0-1717390 |
| 144 | && qEnvironmentVariableIsEmpty("QT_NO_THREADED_GLIB") partially evaluated: qEnvironmentVariableIsEmpty("QT_NO_THREADED_GLIB")| yes Evaluation Count:1717387 | no Evaluation Count:0 |
| 0-1717387 |
| 145 | && QEventDispatcherGlib::versionSupported()) partially evaluated: QEventDispatcherGlib::versionSupported()| yes Evaluation Count:1717383 | no Evaluation Count:0 |
| 0-1717383 |
| 146 | data->eventDispatcher = new QEventDispatcherGlib; executed: data->eventDispatcher = new QEventDispatcherGlib;Execution Count:1717383 | 1717383 |
| 147 | else | - |
| 148 | | - |
| 149 | data->eventDispatcher = new QEventDispatcherUNIX; never executed: data->eventDispatcher = new QEventDispatcherUNIX; | 0 |
| 150 | | - |
| 151 | | - |
| 152 | data->eventDispatcher->startingUp(); | - |
| 153 | } executed: }Execution Count:1717377 | 1717377 |
| 154 | | - |
| 155 | | - |
| 156 | | - |
| 157 | | - |
| 158 | static void setCurrentThreadName(pthread_t threadId, const char *name) | - |
| 159 | { | - |
| 160 | | - |
| 161 | (void)threadId;; | - |
| 162 | prctl(15, (unsigned long)name, 0, 0, 0); | - |
| 163 | | - |
| 164 | | - |
| 165 | | - |
| 166 | | - |
| 167 | | - |
| 168 | | - |
| 169 | } executed: }Execution Count:1717369 | 1717369 |
| 170 | | - |
| 171 | | - |
| 172 | void *QThreadPrivate::start(void *arg) | - |
| 173 | { | - |
| 174 | | - |
| 175 | pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, __null); | - |
| 176 | | - |
| 177 | do { __pthread_cleanup_class __clframe (QThreadPrivate::finish, arg); | - |
| 178 | | - |
| 179 | QThread *thr = reinterpret_cast<QThread *>(arg); | - |
| 180 | QThreadData *data = QThreadData::get2(thr); | - |
| 181 | | - |
| 182 | | - |
| 183 | if (int(thr->d_func()->priority) & ThreadPriorityResetFlag) { evaluated: int(thr->d_func()->priority) & ThreadPriorityResetFlag| yes Evaluation Count:3 | yes Evaluation Count:1717391 |
| 3-1717391 |
| 184 | thr->setPriority(QThread::Priority(thr->d_func()->priority & ~ThreadPriorityResetFlag)); | - |
| 185 | } executed: }Execution Count:3 | 3 |
| 186 | | - |
| 187 | data->threadId = (Qt::HANDLE)pthread_self(); | - |
| 188 | set_thread_data(data); | - |
| 189 | | - |
| 190 | data->ref(); | - |
| 191 | { | - |
| 192 | QMutexLocker locker(&thr->d_func()->mutex); | - |
| 193 | data->quitNow = thr->d_func()->exited; | - |
| 194 | } | - |
| 195 | | - |
| 196 | if (data->eventDispatcher) evaluated: data->eventDispatcher| yes Evaluation Count:1 | yes Evaluation Count:1717394 |
| 1-1717394 |
| 197 | data->eventDispatcher->startingUp(); executed: data->eventDispatcher->startingUp();Execution Count:1 | 1 |
| 198 | else | - |
| 199 | createEventDispatcher(data); executed: createEventDispatcher(data);Execution Count:1717394 | 1717394 |
| 200 | | - |
| 201 | | - |
| 202 | | - |
| 203 | QString objectName = thr->objectName(); | - |
| 204 | | - |
| 205 | if (__builtin_expect(!!(objectName.isEmpty()), true)) evaluated: __builtin_expect(!!(objectName.isEmpty()), true)| yes Evaluation Count:1714468 | yes Evaluation Count:2917 |
| 2917-1714468 |
| 206 | setCurrentThreadName(thr->d_func()->thread_id, thr->metaObject()->className()); executed: setCurrentThreadName(thr->d_func()->thread_id, thr->metaObject()->className());Execution Count:1714468 | 1714468 |
| 207 | else | - |
| 208 | setCurrentThreadName(thr->d_func()->thread_id, objectName.toLocal8Bit()); executed: setCurrentThreadName(thr->d_func()->thread_id, objectName.toLocal8Bit());Execution Count:2917 | 2917 |
| 209 | | - |
| 210 | | - |
| 211 | | - |
| 212 | thr->started(QThread::QPrivateSignal()); | - |
| 213 | | - |
| 214 | pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, __null); | - |
| 215 | pthread_testcancel(); | - |
| 216 | | - |
| 217 | thr->run(); | - |
| 218 | | - |
| 219 | __clframe.__setdoit (1); } while (0); executed: }Execution Count:1717367 partially evaluated: 0| no Evaluation Count:0 | yes Evaluation Count:1717330 |
| 0-1717367 |
| 220 | | - |
| 221 | return 0; executed: return 0;Execution Count:1717327 | 1717327 |
| 222 | } | - |
| 223 | | - |
| 224 | void QThreadPrivate::finish(void *arg) | - |
| 225 | { | - |
| 226 | QThread *thr = reinterpret_cast<QThread *>(arg); | - |
| 227 | QThreadPrivate *d = thr->d_func(); | - |
| 228 | | - |
| 229 | QMutexLocker locker(&d->mutex); | - |
| 230 | | - |
| 231 | d->isInFinish = true; | - |
| 232 | d->priority = QThread::InheritPriority; | - |
| 233 | void *data = &d->data->tls; | - |
| 234 | locker.unlock(); | - |
| 235 | thr->finished(QThread::QPrivateSignal()); | - |
| 236 | QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); | - |
| 237 | QThreadStorageData::finish((void **)data); | - |
| 238 | locker.relock(); | - |
| 239 | | - |
| 240 | QAbstractEventDispatcher *eventDispatcher = d->data->eventDispatcher; | - |
| 241 | if (eventDispatcher) { evaluated: eventDispatcher| yes Evaluation Count:1717370 | yes Evaluation Count:16 |
| 16-1717370 |
| 242 | d->data->eventDispatcher = 0; | - |
| 243 | locker.unlock(); | - |
| 244 | eventDispatcher->closingDown(); | - |
| 245 | delete eventDispatcher; | - |
| 246 | locker.relock(); | - |
| 247 | } executed: }Execution Count:1717357 | 1717357 |
| 248 | | - |
| 249 | d->thread_id = 0; | - |
| 250 | d->running = false; | - |
| 251 | d->finished = true; | - |
| 252 | | - |
| 253 | d->isInFinish = false; | - |
| 254 | d->thread_done.wakeAll(); | - |
| 255 | } executed: }Execution Count:1717388 | 1717388 |
| 256 | Qt::HANDLE QThread::currentThreadId() | - |
| 257 | { | - |
| 258 | | - |
| 259 | return (Qt::HANDLE)pthread_self(); executed: return (Qt::HANDLE)pthread_self();Execution Count:10366935 | 10366935 |
| 260 | } | - |
| 261 | | - |
| 262 | | - |
| 263 | | - |
| 264 | | - |
| 265 | | - |
| 266 | | - |
| 267 | int QThread::idealThreadCount() | - |
| 268 | { | - |
| 269 | int cores = -1; | - |
| 270 | cores = (int)sysconf(_SC_NPROCESSORS_ONLN); | - |
| 271 | | - |
| 272 | | - |
| 273 | return cores; executed: return cores;Execution Count:1061 | 1061 |
| 274 | } | - |
| 275 | | - |
| 276 | void QThread::yieldCurrentThread() | - |
| 277 | { | - |
| 278 | sched_yield(); | - |
| 279 | } executed: }Execution Count:768 | 768 |
| 280 | | - |
| 281 | static timespec makeTimespec(time_t secs, long nsecs) | - |
| 282 | { | - |
| 283 | struct timespec ts; | - |
| 284 | ts.tv_sec = secs; | - |
| 285 | ts.tv_nsec = nsecs; | - |
| 286 | return ts; executed: return ts;Execution Count:414348 | 414348 |
| 287 | } | - |
| 288 | | - |
| 289 | void QThread::sleep(unsigned long secs) | - |
| 290 | { | - |
| 291 | qt_nanosleep(makeTimespec(secs, 0)); | - |
| 292 | } executed: }Execution Count:2 | 2 |
| 293 | | - |
| 294 | void QThread::msleep(unsigned long msecs) | - |
| 295 | { | - |
| 296 | qt_nanosleep(makeTimespec(msecs / 1000, msecs % 1000 * 1000 * 1000)); | - |
| 297 | } executed: }Execution Count:341168 | 341168 |
| 298 | | - |
| 299 | void QThread::usleep(unsigned long usecs) | - |
| 300 | { | - |
| 301 | qt_nanosleep(makeTimespec(usecs / 1000 / 1000, usecs % (1000*1000) * 1000)); | - |
| 302 | } executed: }Execution Count:73042 | 73042 |
| 303 | | - |
| 304 | | - |
| 305 | | - |
| 306 | | - |
| 307 | | - |
| 308 | static bool calculateUnixPriority(int priority, int *sched_policy, int *__sched_priority) | - |
| 309 | { | - |
| 310 | | - |
| 311 | if (priority == QThread::IdlePriority) { evaluated: priority == QThread::IdlePriority| yes Evaluation Count:8 | yes Evaluation Count:334 |
| 8-334 |
| 312 | *sched_policy = 5; | - |
| 313 | *__sched_priority = 0; | - |
| 314 | return true; executed: return true;Execution Count:8 | 8 |
| 315 | } | - |
| 316 | const int lowestPriority = QThread::LowestPriority; | - |
| 317 | | - |
| 318 | | - |
| 319 | | - |
| 320 | const int highestPriority = QThread::TimeCriticalPriority; | - |
| 321 | | - |
| 322 | int prio_min = sched_get_priority_min(*sched_policy); | - |
| 323 | int prio_max = sched_get_priority_max(*sched_policy); | - |
| 324 | if (prio_min == -1 || prio_max == -1) partially evaluated: prio_min == -1| no Evaluation Count:0 | yes Evaluation Count:334 |
partially evaluated: prio_max == -1| no Evaluation Count:0 | yes Evaluation Count:334 |
| 0-334 |
| 325 | return false; never executed: return false; | 0 |
| 326 | | - |
| 327 | int prio; | - |
| 328 | | - |
| 329 | prio = ((priority - lowestPriority) * (prio_max - prio_min) / highestPriority) + prio_min; | - |
| 330 | prio = qMax(prio_min, qMin(prio_max, prio)); | - |
| 331 | | - |
| 332 | *__sched_priority = prio; | - |
| 333 | return true; executed: return true;Execution Count:334 | 334 |
| 334 | } | - |
| 335 | | - |
| 336 | | - |
| 337 | void QThread::start(Priority priority) | - |
| 338 | { | - |
| 339 | QThreadPrivate * const d = d_func(); | - |
| 340 | QMutexLocker locker(&d->mutex); | - |
| 341 | | - |
| 342 | if (d->isInFinish) evaluated: d->isInFinish| yes Evaluation Count:567 | yes Evaluation Count:1719322 |
| 567-1719322 |
| 343 | d->thread_done.wait(locker.mutex()); executed: d->thread_done.wait(locker.mutex());Execution Count:567 | 567 |
| 344 | | - |
| 345 | if (d->running) evaluated: d->running| yes Evaluation Count:2493 | yes Evaluation Count:1717396 |
| 2493-1717396 |
| 346 | return; executed: return;Execution Count:2493 | 2493 |
| 347 | | - |
| 348 | d->running = true; | - |
| 349 | d->finished = false; | - |
| 350 | d->returnCode = 0; | - |
| 351 | d->exited = false; | - |
| 352 | | - |
| 353 | pthread_attr_t attr; | - |
| 354 | pthread_attr_init(&attr); | - |
| 355 | pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); | - |
| 356 | | - |
| 357 | d->priority = priority; | - |
| 358 | | - |
| 359 | | - |
| 360 | switch (priority) { | - |
| 361 | case InheritPriority: | - |
| 362 | { | - |
| 363 | pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED); | - |
| 364 | break; executed: break;Execution Count:1717071 | 1717071 |
| 365 | } | - |
| 366 | | - |
| 367 | default: | - |
| 368 | { | - |
| 369 | int sched_policy; | - |
| 370 | if (pthread_attr_getschedpolicy(&attr, &sched_policy) != 0) { partially evaluated: pthread_attr_getschedpolicy(&attr, &sched_policy) != 0| no Evaluation Count:0 | yes Evaluation Count:325 |
| 0-325 |
| 371 | | - |
| 372 | | - |
| 373 | QMessageLogger("thread/qthread_unix.cpp", 542, __PRETTY_FUNCTION__).warning("QThread::start: Cannot determine default scheduler policy"); | - |
| 374 | break; | 0 |
| 375 | } | - |
| 376 | | - |
| 377 | int prio; | - |
| 378 | if (!calculateUnixPriority(priority, &sched_policy, &prio)) { partially evaluated: !calculateUnixPriority(priority, &sched_policy, &prio)| no Evaluation Count:0 | yes Evaluation Count:325 |
| 0-325 |
| 379 | | - |
| 380 | | - |
| 381 | QMessageLogger("thread/qthread_unix.cpp", 550, __PRETTY_FUNCTION__).warning("QThread::start: Cannot determine scheduler priority range"); | - |
| 382 | break; | 0 |
| 383 | } | - |
| 384 | | - |
| 385 | sched_param sp; | - |
| 386 | sp.__sched_priority = prio; | - |
| 387 | | - |
| 388 | if (pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED) != 0 partially evaluated: pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED) != 0| no Evaluation Count:0 | yes Evaluation Count:325 |
| 0-325 |
| 389 | || pthread_attr_setschedpolicy(&attr, sched_policy) != 0 evaluated: pthread_attr_setschedpolicy(&attr, sched_policy) != 0| yes Evaluation Count:3 | yes Evaluation Count:322 |
| 3-322 |
| 390 | || pthread_attr_setschedparam(&attr, &sp) != 0) { partially evaluated: pthread_attr_setschedparam(&attr, &sp) != 0| no Evaluation Count:0 | yes Evaluation Count:322 |
| 0-322 |
| 391 | | - |
| 392 | | - |
| 393 | pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED); | - |
| 394 | d->priority = Priority(priority | ThreadPriorityResetFlag); | - |
| 395 | } executed: }Execution Count:3 | 3 |
| 396 | break; executed: break;Execution Count:325 | 325 |
| 397 | } | - |
| 398 | } | - |
| 399 | | - |
| 400 | | - |
| 401 | | - |
| 402 | if (d->stackSize > 0) { partially evaluated: d->stackSize > 0| no Evaluation Count:0 | yes Evaluation Count:1717396 |
| 0-1717396 |
| 403 | | - |
| 404 | int code = pthread_attr_setstacksize(&attr, d->stackSize); | - |
| 405 | | - |
| 406 | | - |
| 407 | | - |
| 408 | | - |
| 409 | if (code) { | 0 |
| 410 | QMessageLogger("thread/qthread_unix.cpp", 579, __PRETTY_FUNCTION__).warning("QThread::start: Thread stack size error: %s", | - |
| 411 | QString(qt_error_string(code)).toLocal8Bit().constData()); | - |
| 412 | | - |
| 413 | | - |
| 414 | | - |
| 415 | d->running = false; | - |
| 416 | d->finished = false; | - |
| 417 | return; | 0 |
| 418 | } | - |
| 419 | } | 0 |
| 420 | | - |
| 421 | int code = | - |
| 422 | pthread_create(&d->thread_id, &attr, QThreadPrivate::start, this); | - |
| 423 | if (code == 1) { partially evaluated: code == 1| no Evaluation Count:0 | yes Evaluation Count:1717396 |
| 0-1717396 |
| 424 | | - |
| 425 | | - |
| 426 | | - |
| 427 | pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED); | - |
| 428 | | - |
| 429 | code = | - |
| 430 | pthread_create(&d->thread_id, &attr, QThreadPrivate::start, this); | - |
| 431 | } | 0 |
| 432 | | - |
| 433 | pthread_attr_destroy(&attr); | - |
| 434 | | - |
| 435 | if (code) { partially evaluated: code| no Evaluation Count:0 | yes Evaluation Count:1717396 |
| 0-1717396 |
| 436 | QMessageLogger("thread/qthread_unix.cpp", 605, __PRETTY_FUNCTION__).warning("QThread::start: Thread creation error: %s", QString(qt_error_string(code)).toLocal8Bit().constData()); | - |
| 437 | | - |
| 438 | d->running = false; | - |
| 439 | d->finished = false; | - |
| 440 | d->thread_id = 0; | - |
| 441 | } | 0 |
| 442 | } executed: }Execution Count:1717396 | 1717396 |
| 443 | | - |
| 444 | void QThread::terminate() | - |
| 445 | { | - |
| 446 | | - |
| 447 | QThreadPrivate * const d = d_func(); | - |
| 448 | QMutexLocker locker(&d->mutex); | - |
| 449 | | - |
| 450 | if (!d->thread_id) partially evaluated: !d->thread_id| no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
| 451 | return; | 0 |
| 452 | | - |
| 453 | int code = pthread_cancel(d->thread_id); | - |
| 454 | if (code) { partially evaluated: code| no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
| 455 | QMessageLogger("thread/qthread_unix.cpp", 624, __PRETTY_FUNCTION__).warning("QThread::start: Thread termination error: %s", | - |
| 456 | QString(qt_error_string((code))).toLocal8Bit().constData()); | - |
| 457 | } | 0 |
| 458 | | - |
| 459 | } executed: }Execution Count:2 | 2 |
| 460 | | - |
| 461 | bool QThread::wait(unsigned long time) | - |
| 462 | { | - |
| 463 | QThreadPrivate * const d = d_func(); | - |
| 464 | QMutexLocker locker(&d->mutex); | - |
| 465 | | - |
| 466 | if (d->thread_id == pthread_self()) { partially evaluated: d->thread_id == pthread_self()| no Evaluation Count:0 | yes Evaluation Count:1716643 |
| 0-1716643 |
| 467 | QMessageLogger("thread/qthread_unix.cpp", 636, __PRETTY_FUNCTION__).warning("QThread::wait: Thread tried to wait on itself"); | - |
| 468 | return false; never executed: return false; | 0 |
| 469 | } | - |
| 470 | | - |
| 471 | if (d->finished || !d->running) evaluated: d->finished| yes Evaluation Count:4371 | yes Evaluation Count:1712272 |
partially evaluated: !d->running| no Evaluation Count:0 | yes Evaluation Count:1712272 |
| 0-1712272 |
| 472 | return true; executed: return true;Execution Count:4371 | 4371 |
| 473 | | - |
| 474 | while (d->running) { evaluated: d->running| yes Evaluation Count:1712272 | yes Evaluation Count:1712200 |
| 1712200-1712272 |
| 475 | if (!d->thread_done.wait(locker.mutex(), time)) evaluated: !d->thread_done.wait(locker.mutex(), time)| yes Evaluation Count:72 | yes Evaluation Count:1712200 |
| 72-1712200 |
| 476 | return false; executed: return false;Execution Count:72 | 72 |
| 477 | } executed: }Execution Count:1712200 | 1712200 |
| 478 | return true; executed: return true;Execution Count:1712200 | 1712200 |
| 479 | } | - |
| 480 | | - |
| 481 | void QThread::setTerminationEnabled(bool enabled) | - |
| 482 | { | - |
| 483 | QThread *thr = currentThread(); | - |
| 484 | qt_noop(); | - |
| 485 | | - |
| 486 | | - |
| 487 | (void)thr; | - |
| 488 | | - |
| 489 | | - |
| 490 | | - |
| 491 | pthread_setcancelstate(enabled ? PTHREAD_CANCEL_ENABLE : PTHREAD_CANCEL_DISABLE, __null); | - |
| 492 | if (enabled) evaluated: enabled| yes Evaluation Count:2 | yes Evaluation Count:2 |
| 2 |
| 493 | pthread_testcancel(); executed: pthread_testcancel();Execution Count:2 | 2 |
| 494 | | - |
| 495 | } executed: }Execution Count:2 | 2 |
| 496 | | - |
| 497 | void QThread::setPriority(Priority priority) | - |
| 498 | { | - |
| 499 | QThreadPrivate * const d = d_func(); | - |
| 500 | QMutexLocker locker(&d->mutex); | - |
| 501 | if (!d->running) { evaluated: !d->running| yes Evaluation Count:14 | yes Evaluation Count:17 |
| 14-17 |
| 502 | QMessageLogger("thread/qthread_unix.cpp", 671, __PRETTY_FUNCTION__).warning("QThread::setPriority: Cannot set priority, thread is not running"); | - |
| 503 | return; executed: return;Execution Count:14 | 14 |
| 504 | } | - |
| 505 | | - |
| 506 | d->priority = priority; | - |
| 507 | | - |
| 508 | | - |
| 509 | | - |
| 510 | | - |
| 511 | int sched_policy; | - |
| 512 | sched_param param; | - |
| 513 | | - |
| 514 | if (pthread_getschedparam(d->thread_id, &sched_policy, ¶m) != 0) { partially evaluated: pthread_getschedparam(d->thread_id, &sched_policy, ¶m) != 0| no Evaluation Count:0 | yes Evaluation Count:17 |
| 0-17 |
| 515 | | - |
| 516 | | - |
| 517 | QMessageLogger("thread/qthread_unix.cpp", 686, __PRETTY_FUNCTION__).warning("QThread::setPriority: Cannot get scheduler parameters"); | - |
| 518 | return; | 0 |
| 519 | } | - |
| 520 | | - |
| 521 | int prio; | - |
| 522 | if (!calculateUnixPriority(priority, &sched_policy, &prio)) { partially evaluated: !calculateUnixPriority(priority, &sched_policy, &prio)| no Evaluation Count:0 | yes Evaluation Count:17 |
| 0-17 |
| 523 | | - |
| 524 | | - |
| 525 | QMessageLogger("thread/qthread_unix.cpp", 694, __PRETTY_FUNCTION__).warning("QThread::setPriority: Cannot determine scheduler priority range"); | - |
| 526 | return; | 0 |
| 527 | } | - |
| 528 | | - |
| 529 | param.__sched_priority = prio; | - |
| 530 | int status = pthread_setschedparam(d->thread_id, sched_policy, ¶m); | - |
| 531 | | - |
| 532 | | - |
| 533 | | - |
| 534 | if (status == -1 && sched_policy == 5 && (*__errno_location ()) == 22) { partially evaluated: status == -1| no Evaluation Count:0 | yes Evaluation Count:17 |
never evaluated: sched_policy == 5 never evaluated: (*__errno_location ()) == 22 | 0-17 |
| 535 | | - |
| 536 | pthread_getschedparam(d->thread_id, &sched_policy, ¶m); | - |
| 537 | param.__sched_priority = sched_get_priority_min(sched_policy); | - |
| 538 | pthread_setschedparam(d->thread_id, sched_policy, ¶m); | - |
| 539 | } | 0 |
| 540 | | - |
| 541 | | - |
| 542 | | - |
| 543 | | - |
| 544 | } executed: }Execution Count:17 | 17 |
| 545 | | - |
| 546 | | - |
| 547 | | - |
| 548 | | - |
| 549 | | - |
| | |