Lines Matching refs:le

289 	struct ledger_entry *le;
294 le = &ledger->l_entries[entry];
295 if ((le->le_flags & ENTRY_ACTIVE) == 0) {
296 flag_set(&le->le_flags, ENTRY_ACTIVE);
358 struct ledger_entry *le = &ledger->l_entries[i];
361 le->le_flags = et->et_flags;
364 flag_clear(&le->le_flags, ENTRY_ACTIVE);
370 flag_set(&le->le_flags, LEDGER_ACTION_CALLBACK);
371 le->le_credit = 0;
372 le->le_debit = 0;
373 le->le_limit = LEDGER_LIMIT_INFINITY;
374 le->le_refill_period = 0;
443 limit_exceeded(struct ledger_entry *le)
447 balance = le->le_credit - le->le_debit;
448 if ((le->le_limit <= 0) && (balance < le->le_limit))
451 if ((le->le_limit > 0) && (balance > le->le_limit))
473 ledger_limit_entry_wakeup(struct ledger_entry *le)
477 if (!limit_exceeded(le)) {
478 flags = flag_clear(&le->le_flags, CALLED_BACK);
480 while (le->le_flags & WAKE_NEEDED) {
481 flag_clear(&le->le_flags, WAKE_NEEDED);
482 thread_wakeup((event_t)le);
494 struct ledger_entry *le;
498 le = &ledger->l_entries[entry];
506 if (flag_set(&le->le_flags, REFILL_INPROGRESS) & REFILL_INPROGRESS) {
508 while (cnt++ < 100 && (le->le_flags & REFILL_INPROGRESS))
517 period = le->le_refill_period;
518 elapsed = now - le->le_last_refill;
520 flag_clear(&le->le_flags, REFILL_INPROGRESS);
539 periods = (now - le->le_last_refill) / period;
541 balance = le->le_credit - le->le_debit;
542 due = periods * le->le_limit;
545 OSAddAtomic64(due, &le->le_debit);
553 le->le_last_refill = now;
555 le->le_last_refill += (le->le_refill_period * periods);
557 flag_clear(&le->le_flags, REFILL_INPROGRESS);
560 if (!limit_exceeded(le))
561 ledger_limit_entry_wakeup(le);
567 struct ledger_entry *le;
570 le = &ledger->l_entries[entry];
573 if (le->le_refill_period) {
575 if ((now - le->le_last_refill) > le->le_refill_period)
579 if (limit_exceeded(le)) {
590 if ((le->le_flags & LEDGER_ACTION_BLOCK) ||
591 (!(le->le_flags & CALLED_BACK) &&
601 if (le->le_flags & WAKE_NEEDED)
602 ledger_limit_entry_wakeup(le);
613 struct ledger_entry *le;
621 le = &ledger->l_entries[entry];
623 old = OSAddAtomic64(amount, &le->le_credit);
640 struct ledger_entry *le;
646 le = &ledger->l_entries[entry];
647 le->le_limit = limit;
648 le->le_last_refill = 0;
649 flag_clear(&le->le_flags, CALLED_BACK);
650 ledger_limit_entry_wakeup(le);
725 struct ledger_entry *le;
731 le = &ledger->l_entries[entry];
732 le->le_refill_period = nsecs_to_abstime(period);
774 struct ledger_entry *le;
783 le = &ledger->l_entries[entry];
785 old = OSAddAtomic64(amount, &le->le_debit);
875 struct ledger_entry *le;
880 le = &l->l_entries[i];
881 if (limit_exceeded(le) == FALSE)
885 if (le->le_refill_period) {
886 if ((le->le_last_refill + le->le_refill_period) > now) {
888 if (limit_exceeded(le) == FALSE)
893 if (le->le_flags & LEDGER_ACTION_BLOCK)
895 if ((le->le_flags & LEDGER_ACTION_CALLBACK) == 0)
899 flags = flag_set(&le->le_flags, CALLED_BACK);
915 struct ledger_entry *le;
918 le = &l->l_entries[i];
919 if ((!limit_exceeded(le)) ||
920 ((le->le_flags & LEDGER_ACTION_BLOCK) == 0))
924 ret = assert_wait_deadline(le, TRUE,
925 le->le_last_refill + le->le_refill_period);
930 flag_set(&le->le_flags, WAKE_NEEDED);
953 struct ledger_entry *le;
958 le = &ledger->l_entries[entry];
960 *credit = le->le_credit;
961 *debit = le->le_debit;
1009 struct ledger_entry *le;
1024 le = l->l_entries;
1028 lei->lei_limit = le->le_limit;
1029 lei->lei_credit = le->le_credit;
1030 lei->lei_debit = le->le_debit;
1033 abstime_to_nsecs(le->le_refill_period);
1035 abstime_to_nsecs(now - le->le_last_refill);
1036 le++;