Lines Matching refs:perf
41 static int wait_sample(struct msm_perf_state *perf)
45 if (time_after(perf->next_jiffies, start_jiffies)) {
47 perf->next_jiffies - start_jiffies;
54 perf->next_jiffies += SAMPLE_TIME;
58 static int refill_buf(struct msm_perf_state *perf)
60 struct msm_drm_private *priv = perf->dev->dev_private;
62 char *ptr = perf->buf;
63 int rem = sizeof(perf->buf);
66 if ((perf->cnt++ % 32) == 0) {
86 ret = wait_sample(perf);
114 perf->bufpos = 0;
115 perf->buftot = ptr - perf->buf;
123 struct msm_perf_state *perf = file->private_data;
126 mutex_lock(&perf->read_lock);
128 if (perf->bufpos >= perf->buftot) {
129 ret = refill_buf(perf);
134 n = min((int)sz, perf->buftot - perf->bufpos);
135 if (copy_to_user(buf, &perf->buf[perf->bufpos], n)) {
140 perf->bufpos += n;
144 mutex_unlock(&perf->read_lock);
152 struct msm_perf_state *perf = inode->i_private;
153 struct drm_device *dev = perf->dev;
163 if (perf->open) {
168 file->private_data = perf;
169 perf->open = true;
170 perf->cnt = 0;
171 perf->buftot = 0;
172 perf->bufpos = 0;
174 perf->next_jiffies = jiffies + SAMPLE_TIME;
183 struct msm_perf_state *perf = inode->i_private;
184 struct msm_drm_private *priv = perf->dev->dev_private;
186 perf->open = false;
202 struct msm_perf_state *perf;
205 if (priv->perf)
208 perf = kzalloc(sizeof(*perf), GFP_KERNEL);
209 if (!perf)
212 perf->dev = minor->dev;
214 mutex_init(&perf->read_lock);
215 priv->perf = perf;
217 debugfs_create_file("perf", S_IFREG | S_IRUGO, minor->debugfs_root,
218 perf, &perf_debugfs_fops);
224 struct msm_perf_state *perf = priv->perf;
226 if (!perf)
229 priv->perf = NULL;
231 mutex_destroy(&perf->read_lock);
233 kfree(perf);