|
@@ -435,6 +435,7 @@ static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry,
|
|
|
return;
|
|
|
}
|
|
|
snd_iprintf(buffer, "state: %s\n", snd_pcm_state_name(status.state));
|
|
|
+ snd_iprintf(buffer, "owner_pid : %d\n", pid_vnr(substream->pid));
|
|
|
snd_iprintf(buffer, "trigger_time: %ld.%09ld\n",
|
|
|
status.trigger_tstamp.tv_sec, status.trigger_tstamp.tv_nsec);
|
|
|
snd_iprintf(buffer, "tstamp : %ld.%09ld\n",
|
|
@@ -900,6 +901,7 @@ int snd_pcm_attach_substream(struct snd_pcm *pcm, int stream,
|
|
|
substream->private_data = pcm->private_data;
|
|
|
substream->ref_count = 1;
|
|
|
substream->f_flags = file->f_flags;
|
|
|
+ substream->pid = get_pid(task_pid(current));
|
|
|
pstr->substream_opened++;
|
|
|
*rsubstream = substream;
|
|
|
return 0;
|
|
@@ -921,6 +923,8 @@ void snd_pcm_detach_substream(struct snd_pcm_substream *substream)
|
|
|
kfree(runtime->hw_constraints.rules);
|
|
|
kfree(runtime);
|
|
|
substream->runtime = NULL;
|
|
|
+ put_pid(substream->pid);
|
|
|
+ substream->pid = NULL;
|
|
|
substream->pstr->substream_opened--;
|
|
|
}
|
|
|
|