• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/contrib/zstd/lib/compress/

Lines Matching defs:jobs

591     /* Now it is the next jobs turn */
783 BYTE* buffer; /* The round input buffer. All jobs get references
808 ZSTDMT_jobDescription* jobs;
872 ZSTDMT_freeJobsTable(mtctx->jobs, mtctx->jobIDMask+1, mtctx->cMem);
874 mtctx->jobs = ZSTDMT_createJobsTable(&nbJobs, mtctx->cMem);
875 if (mtctx->jobs==NULL) return ERROR(memory_allocation);
916 mtctx->jobs = ZSTDMT_createJobsTable(&nbJobs, cMem);
924 if (!mtctx->factory | !mtctx->jobs | !mtctx->bufPool | !mtctx->cctxPool | !mtctx->seqPool | initError) {
953 ZSTD_pthread_mutex_t const mutex = mtctx->jobs[jobID].job_mutex;
954 ZSTD_pthread_cond_t const cond = mtctx->jobs[jobID].job_cond;
956 DEBUGLOG(4, "job%02u: release dst address %08X", jobID, (U32)(size_t)mtctx->jobs[jobID].dstBuff.start);
957 ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[jobID].dstBuff);
960 ZSTD_memset(&mtctx->jobs[jobID], 0, sizeof(mtctx->jobs[jobID]));
961 mtctx->jobs[jobID].job_mutex = mutex;
962 mtctx->jobs[jobID].job_cond = cond;
974 ZSTD_PTHREAD_MUTEX_LOCK(&mtctx->jobs[jobID].job_mutex);
975 while (mtctx->jobs[jobID].consumed < mtctx->jobs[jobID].src.size) {
977 ZSTD_pthread_cond_wait(&mtctx->jobs[jobID].job_cond, &mtctx->jobs[jobID].job_mutex);
979 ZSTD_pthread_mutex_unlock(&mtctx->jobs[jobID].job_mutex);
990 ZSTDMT_freeJobsTable(mtctx->jobs, mtctx->jobIDMask+1, mtctx->cMem);
1064 DEBUGLOG(6, "ZSTDMT_getFrameProgression: jobs: from %u to <%u (jobReady:%u)",
1068 ZSTDMT_jobDescription* jobPtr = &mtctx->jobs[wJobID];
1080 ZSTD_pthread_mutex_unlock(&mtctx->jobs[wJobID].job_mutex);
1096 ZSTDMT_jobDescription* const jobPtr = &mtctx->jobs[wJobID];
1113 ZSTD_pthread_mutex_unlock(&mtctx->jobs[wJobID].job_mutex);
1336 mtctx->jobs[jobID].src.start = src;
1337 mtctx->jobs[jobID].src.size = srcSize;
1339 mtctx->jobs[jobID].prefix = mtctx->inBuff.prefix;
1340 mtctx->jobs[jobID].consumed = 0;
1341 mtctx->jobs[jobID].cSize = 0;
1342 mtctx->jobs[jobID].params = mtctx->params;
1343 mtctx->jobs[jobID].cdict = mtctx->nextJobID==0 ? mtctx->cdict : NULL;
1344 mtctx->jobs[jobID].fullFrameSize = mtctx->frameContentSize;
1345 mtctx->jobs[jobID].dstBuff = g_nullBuffer;
1346 mtctx->jobs[jobID].cctxPool = mtctx->cctxPool;
1347 mtctx->jobs[jobID].bufPool = mtctx->bufPool;
1348 mtctx->jobs[jobID].seqPool = mtctx->seqPool;
1349 mtctx->jobs[jobID].serial = &mtctx->serial;
1350 mtctx->jobs[jobID].jobID = mtctx->nextJobID;
1351 mtctx->jobs[jobID].firstJob = (mtctx->nextJobID==0);
1352 mtctx->jobs[jobID].lastJob = endFrame;
1353 mtctx->jobs[jobID].frameChecksumNeeded = mtctx->params.fParams.checksumFlag && endFrame && (mtctx->nextJobID>0);
1354 mtctx->jobs[jobID].dstFlushed = 0;
1377 ZSTDMT_writeLastEmptyBlock(mtctx->jobs + jobID);
1385 (U32)mtctx->jobs[jobID].src.size,
1386 mtctx->jobs[jobID].lastJob,
1389 if (POOL_tryAdd(mtctx->factory, ZSTDMT_compressionJob, &mtctx->jobs[jobID])) {
1413 ZSTD_PTHREAD_MUTEX_LOCK(&mtctx->jobs[wJobID].job_mutex);
1416 assert(mtctx->jobs[wJobID].dstFlushed <= mtctx->jobs[wJobID].cSize);
1417 while (mtctx->jobs[wJobID].dstFlushed == mtctx->jobs[wJobID].cSize) { /* nothing to flush */
1418 if (mtctx->jobs[wJobID].consumed == mtctx->jobs[wJobID].src.size) {
1420 mtctx->doneJobID, (U32)mtctx->jobs[wJobID].consumed, (U32)mtctx->jobs[wJobID].src.size);
1424 mtctx->doneJobID, (U32)mtctx->jobs[wJobID].dstFlushed);
1425 ZSTD_pthread_cond_wait(&mtctx->jobs[wJobID].job_cond, &mtctx->jobs[wJobID].job_mutex); /* block when nothing to flush but some to come */
1429 { size_t cSize = mtctx->jobs[wJobID].cSize; /* shared */
1430 size_t const srcConsumed = mtctx->jobs[wJobID].consumed; /* shared */
1431 size_t const srcSize = mtctx->jobs[wJobID].src.size; /* read-only, could be done after mutex lock, but no-declaration-after-statement */
1432 ZSTD_pthread_mutex_unlock(&mtctx->jobs[wJobID].job_mutex);
1443 && mtctx->jobs[wJobID].frameChecksumNeeded ) {
1446 MEM_writeLE32((char*)mtctx->jobs[wJobID].dstBuff.start + mtctx->jobs[wJobID].cSize, checksum);
1448 mtctx->jobs[wJobID].cSize += 4; /* can write this shared value, as worker is no longer active */
1449 mtctx->jobs[wJobID].frameChecksumNeeded = 0;
1453 size_t const toFlush = MIN(cSize - mtctx->jobs[wJobID].dstFlushed, output->size - output->pos);
1457 assert(cSize >= mtctx->jobs[wJobID].dstFlushed);
1458 assert(mtctx->jobs[wJobID].dstBuff.start != NULL);
1461 (const char*)mtctx->jobs[wJobID].dstBuff.start + mtctx->jobs[wJobID].dstFlushed,
1465 mtctx->jobs[wJobID].dstFlushed += toFlush; /* can write : this value is only used by mtctx */
1468 && (mtctx->jobs[wJobID].dstFlushed == cSize) ) { /* output buffer fully flushed => free this job position */
1470 mtctx->doneJobID, (U32)mtctx->jobs[wJobID].dstFlushed);
1471 ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[wJobID].dstBuff);
1473 mtctx->jobs[wJobID].dstBuff = g_nullBuffer;
1474 mtctx->jobs[wJobID].cSize = 0; /* ensure this job slot is considered "not started" in future check */
1481 if (cSize > mtctx->jobs[wJobID].dstFlushed) return (cSize - mtctx->jobs[wJobID].dstFlushed);
1484 if (mtctx->doneJobID < mtctx->nextJobID) return 1; /* some more jobs ongoing */
1487 mtctx->allJobsCompleted = mtctx->frameEnded; /* all jobs are entirely flushed => if this one is last one, frame is completed */
1507 ZSTD_PTHREAD_MUTEX_LOCK(&mtctx->jobs[wJobID].job_mutex);
1508 consumed = mtctx->jobs[wJobID].consumed;
1509 ZSTD_pthread_mutex_unlock(&mtctx->jobs[wJobID].job_mutex);
1511 if (consumed < mtctx->jobs[wJobID].src.size) {
1512 range_t range = mtctx->jobs[wJobID].prefix;
1515 range = mtctx->jobs[wJobID].src;
1518 assert(range.start <= mtctx->jobs[wJobID].src.start);
1764 * still compression jobs ongoing.