Lines Matching refs:token
57 …[](IOService *device, uint64_t token, PerfControllerInterface::WorkState *state, WorkSubmitArgs *a… in init() argument
60 …[](IOService *device, uint64_t token, PerfControllerInterface::WorkState *state, WorkBeginArgs *ar… in init() argument
63 …[](IOService *device, uint64_t token, PerfControllerInterface::WorkState *state, WorkEndArgs *args… in init() argument
66 …[](IOService *device, uint64_t token, PerfControllerInterface::WorkState *state, WorkUpdateArgs *a… in init() argument
168 IOPerfControlClient::tokenToGlobalUniqueToken(uint64_t token) in tokenToGlobalUniqueToken() argument
170 return token | (static_cast<uint64_t>(driverIndex) << kWorkTableIndexBits); in tokenToGlobalUniqueToken()
203 uint64_t token = kIOPerfControlClientWorkUntracked; in allocateToken() local
221 token = index; in allocateToken()
231 if (token == kIOPerfControlClientWorkUntracked) { in allocateToken()
247 return token; in allocateToken()
251 IOPerfControlClient::deallocateToken(uint64_t token) in deallocateToken() argument
254 …assertf(token != kIOPerfControlClientWorkUntracked, "Attempt to deallocate token kIOPerfControlCli… in deallocateToken()
255 …assertf(token <= workTableLength, "Attempt to deallocate token %llu which is greater than the tabl… in deallocateToken()
258 auto &entry = workTable[token]; in deallocateToken()
262 workTableNextIndex = token; in deallocateToken()
276 IOPerfControlClient::getEntryForToken(uint64_t token) in getEntryForToken() argument
278 if (token == kIOPerfControlClientWorkUntracked) { in getEntryForToken()
282 if (token >= workTableLength) { in getEntryForToken()
283 panic("Invalid work token (%llu): index out of bounds.", token); in getEntryForToken()
286 WorkTableEntry *entry = &workTable[token]; in getEntryForToken()
287 assertf(entry->thread_group, "Invalid work token: %llu", token); in getEntryForToken()
292 IOPerfControlClient::markEntryStarted(uint64_t token, bool started) in markEntryStarted() argument
294 if (token == kIOPerfControlClientWorkUntracked) { in markEntryStarted()
298 if (token >= workTableLength) { in markEntryStarted()
299 panic("Invalid work token (%llu): index out of bounds.", token); in markEntryStarted()
302 workTable[token].started = started; in markEntryStarted()
414 uint64_t token = allocateToken(thread_group); in workSubmit() local
415 if (token != kIOPerfControlClientWorkUntracked) { in workSubmit()
416 state.work_data = &workTable[token].perfcontrol_data; in workSubmit()
417 state.work_data_size = sizeof(workTable[token].perfcontrol_data); in workSubmit()
418 shared->interface.workSubmit(device, tokenToGlobalUniqueToken(token), &state, args); in workSubmit()
420 return token; in workSubmit()
447 uint64_t token = allocateToken(thread_group); in workSubmitAndBegin() local
448 if (token != kIOPerfControlClientWorkUntracked) { in workSubmitAndBegin()
449 auto &entry = workTable[token]; in workSubmitAndBegin()
451 state.work_data_size = sizeof(workTable[token].perfcontrol_data); in workSubmitAndBegin()
452 shared->interface.workSubmit(device, tokenToGlobalUniqueToken(token), &state, submitArgs); in workSubmitAndBegin()
454 shared->interface.workBegin(device, tokenToGlobalUniqueToken(token), &state, beginArgs); in workSubmitAndBegin()
455 markEntryStarted(token, true); in workSubmitAndBegin()
457 return token; in workSubmitAndBegin()
464 IOPerfControlClient::workBegin(IOService *device, uint64_t token, WorkBeginArgs *args) in workBegin() argument
467 WorkTableEntry *entry = getEntryForToken(token); in workBegin()
472 assertf(!entry->started, "Work for token %llu was already started", token); in workBegin()
482 shared->interface.workBegin(device, tokenToGlobalUniqueToken(token), &state, args); in workBegin()
483 markEntryStarted(token, true); in workBegin()
488 IOPerfControlClient::workEnd(IOService *device, uint64_t token, WorkEndArgs *args, bool done) in workEnd() argument
491 WorkTableEntry *entry = getEntryForToken(token); in workEnd()
507 …shared->interface.workEndWithResources(device, tokenToGlobalUniqueToken(token), &state, args, &res… in workEnd()
509 accountResources(workTable[token].coal, clientData.driverState.device_type, &resources); in workEnd()
512 shared->interface.workEnd(device, tokenToGlobalUniqueToken(token), &state, args, done); in workEnd()
516 deallocateToken(token); in workEnd()
518 markEntryStarted(token, false); in workEnd()