forked from Minki/linux
[POWERPC] spufs: Add tid file
The new tid file contains the ID of the thread currently running the context, if any. This is used so that the new spu-top and spu-ps tools can find the thread in /proc. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com> Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
7022543ee4
commit
476273adc7
@ -2039,6 +2039,26 @@ static const struct file_operations spufs_proxydma_info_fops = {
|
|||||||
.read = spufs_proxydma_info_read,
|
.read = spufs_proxydma_info_read,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int spufs_show_tid(struct seq_file *s, void *private)
|
||||||
|
{
|
||||||
|
struct spu_context *ctx = s->private;
|
||||||
|
|
||||||
|
seq_printf(s, "%d\n", ctx->tid);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int spufs_tid_open(struct inode *inode, struct file *file)
|
||||||
|
{
|
||||||
|
return single_open(file, spufs_show_tid, SPUFS_I(inode)->i_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct file_operations spufs_tid_fops = {
|
||||||
|
.open = spufs_tid_open,
|
||||||
|
.read = seq_read,
|
||||||
|
.llseek = seq_lseek,
|
||||||
|
.release = single_release,
|
||||||
|
};
|
||||||
|
|
||||||
struct tree_descr spufs_dir_contents[] = {
|
struct tree_descr spufs_dir_contents[] = {
|
||||||
{ "capabilities", &spufs_caps_fops, 0444, },
|
{ "capabilities", &spufs_caps_fops, 0444, },
|
||||||
{ "mem", &spufs_mem_fops, 0666, },
|
{ "mem", &spufs_mem_fops, 0666, },
|
||||||
@ -2072,6 +2092,7 @@ struct tree_descr spufs_dir_contents[] = {
|
|||||||
{ "wbox_info", &spufs_wbox_info_fops, 0444, },
|
{ "wbox_info", &spufs_wbox_info_fops, 0444, },
|
||||||
{ "dma_info", &spufs_dma_info_fops, 0444, },
|
{ "dma_info", &spufs_dma_info_fops, 0444, },
|
||||||
{ "proxydma_info", &spufs_proxydma_info_fops, 0444, },
|
{ "proxydma_info", &spufs_proxydma_info_fops, 0444, },
|
||||||
|
{ "tid", &spufs_tid_fops, 0444, },
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2095,6 +2116,7 @@ struct tree_descr spufs_dir_nosched_contents[] = {
|
|||||||
{ "psmap", &spufs_psmap_fops, 0666, },
|
{ "psmap", &spufs_psmap_fops, 0666, },
|
||||||
{ "phys-id", &spufs_id_ops, 0666, },
|
{ "phys-id", &spufs_id_ops, 0666, },
|
||||||
{ "object-id", &spufs_object_id_ops, 0666, },
|
{ "object-id", &spufs_object_id_ops, 0666, },
|
||||||
|
{ "tid", &spufs_tid_fops, 0444, },
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -101,6 +101,13 @@ void spu_set_timeslice(struct spu_context *ctx)
|
|||||||
*/
|
*/
|
||||||
void __spu_update_sched_info(struct spu_context *ctx)
|
void __spu_update_sched_info(struct spu_context *ctx)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* 32-Bit assignment are atomic on powerpc, and we don't care about
|
||||||
|
* memory ordering here because retriving the controlling thread is
|
||||||
|
* per defintion racy.
|
||||||
|
*/
|
||||||
|
ctx->tid = current->pid;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We do our own priority calculations, so we normally want
|
* We do our own priority calculations, so we normally want
|
||||||
* ->static_prio to start with. Unfortunately thies field
|
* ->static_prio to start with. Unfortunately thies field
|
||||||
|
@ -77,6 +77,9 @@ struct spu_context {
|
|||||||
struct list_head gang_list;
|
struct list_head gang_list;
|
||||||
struct spu_gang *gang;
|
struct spu_gang *gang;
|
||||||
|
|
||||||
|
/* owner thread */
|
||||||
|
pid_t tid;
|
||||||
|
|
||||||
/* scheduler fields */
|
/* scheduler fields */
|
||||||
struct list_head rq;
|
struct list_head rq;
|
||||||
unsigned int time_slice;
|
unsigned int time_slice;
|
||||||
|
Loading…
Reference in New Issue
Block a user