Lines Matching defs:kip

150 	struct kprobe_insn_page *kip;
156 list_for_each_entry_rcu(kip, &c->pages, list) {
157 if (kip->nused < slots_per_page(c)) {
161 if (kip->slot_used[i] == SLOT_CLEAN) {
162 kip->slot_used[i] = SLOT_USED;
163 kip->nused++;
164 return kip->insns + (i * c->insn_size);
167 /* kip->nused is broken. Fix it. */
168 kip->nused = slots_per_page(c);
176 kip = kmalloc_flex(*kip, slot_used, slots_per_page(c));
177 if (!kip)
180 kip->insns = c->alloc();
181 if (!kip->insns) {
182 kfree(kip);
185 INIT_LIST_HEAD(&kip->list);
186 memset(kip->slot_used, SLOT_CLEAN, slots_per_page(c));
187 kip->slot_used[0] = SLOT_USED;
188 kip->nused = 1;
189 kip->ngarbage = 0;
190 kip->cache = c;
191 list_add_rcu(&kip->list, &c->pages);
194 perf_event_ksymbol(PERF_RECORD_KSYMBOL_TYPE_OOL, (unsigned long)kip->insns,
197 return kip->insns;
201 static bool collect_one_slot(struct kprobe_insn_page *kip, int idx)
203 kip->slot_used[idx] = SLOT_CLEAN;
204 kip->nused--;
205 if (kip->nused != 0)
214 if (!list_is_singular(&kip->list)) {
220 (unsigned long)kip->insns, PAGE_SIZE, true,
221 kip->cache->sym);
222 list_del_rcu(&kip->list);
224 kip->cache->free(kip->insns);
225 kfree(kip);
232 struct kprobe_insn_page *kip, *next;
237 list_for_each_entry_safe(kip, next, &c->pages, list) {
240 if (kip->ngarbage == 0)
242 kip->ngarbage = 0; /* we will collect all garbages */
244 if (kip->slot_used[i] == SLOT_DIRTY && collect_one_slot(kip, i))
255 struct kprobe_insn_page *kip = NULL;
259 list_for_each_entry_rcu(kip, &c->pages, list) {
260 idx = ((long)slot - (long)kip->insns) /
263 *pkip = kip;
276 struct kprobe_insn_page *kip = NULL;
280 idx = __find_insn_page(c, slot, &kip);
282 if (kip) {
284 WARN_ON(kip->slot_used[idx] != SLOT_USED);
286 kip->slot_used[idx] = SLOT_DIRTY;
287 kip->ngarbage++;
291 collect_one_slot(kip, idx);
303 struct kprobe_insn_page *kip;
307 list_for_each_entry_rcu(kip, &c->pages, list) {
308 if (addr >= (unsigned long)kip->insns &&
309 addr < (unsigned long)kip->insns + PAGE_SIZE) {
322 struct kprobe_insn_page *kip;
326 list_for_each_entry_rcu(kip, &c->pages, list) {
331 *value = (unsigned long)kip->insns;