Loading arch/mips/sibyte/common/sb_tbprof.c +15 −18 Original line number Diff line number Diff line Loading @@ -403,36 +403,31 @@ static int sbprof_zbprof_stop(void) static int sbprof_tb_open(struct inode *inode, struct file *filp) { int minor; int err = 0; lock_kernel(); minor = iminor(inode); if (minor != 0) { err = -ENODEV; goto out; } if (minor != 0) return -ENODEV; if (xchg(&sbp.open, SB_OPENING) != SB_CLOSED) { err = -EBUSY; goto out; } if (xchg(&sbp.open, SB_OPENING) != SB_CLOSED) return -EBUSY; memset(&sbp, 0, sizeof(struct sbprof_tb)); sbp.sbprof_tbbuf = vmalloc(MAX_TBSAMPLE_BYTES); if (!sbp.sbprof_tbbuf) { err = -ENOMEM; goto out; sbp.open = SB_CLOSED; wmb(); return -ENOMEM; } memset(sbp.sbprof_tbbuf, 0, MAX_TBSAMPLE_BYTES); init_waitqueue_head(&sbp.tb_sync); init_waitqueue_head(&sbp.tb_read); mutex_init(&sbp.lock); sbp.open = SB_OPEN; wmb(); out: unlock_kernel(); return err; return 0; } static int sbprof_tb_release(struct inode *inode, struct file *filp) Loading @@ -440,7 +435,7 @@ static int sbprof_tb_release(struct inode *inode, struct file *filp) int minor; minor = iminor(inode); if (minor != 0 || !sbp.open) if (minor != 0 || sbp.open != SB_CLOSED) return -ENODEV; mutex_lock(&sbp.lock); Loading @@ -449,7 +444,8 @@ static int sbprof_tb_release(struct inode *inode, struct file *filp) sbprof_zbprof_stop(); vfree(sbp.sbprof_tbbuf); sbp.open = 0; sbp.open = SB_CLOSED; wmb(); mutex_unlock(&sbp.lock); Loading Loading @@ -583,7 +579,8 @@ static int __init sbprof_tb_init(void) } tb_dev = dev; sbp.open = 0; sbp.open = SB_CLOSED; wmb(); tb_period = zbbus_mhz * 10000LL; pr_info(DEVNAME ": initialized - tb_period = %lld\n", (long long) tb_period); Loading Loading
arch/mips/sibyte/common/sb_tbprof.c +15 −18 Original line number Diff line number Diff line Loading @@ -403,36 +403,31 @@ static int sbprof_zbprof_stop(void) static int sbprof_tb_open(struct inode *inode, struct file *filp) { int minor; int err = 0; lock_kernel(); minor = iminor(inode); if (minor != 0) { err = -ENODEV; goto out; } if (minor != 0) return -ENODEV; if (xchg(&sbp.open, SB_OPENING) != SB_CLOSED) { err = -EBUSY; goto out; } if (xchg(&sbp.open, SB_OPENING) != SB_CLOSED) return -EBUSY; memset(&sbp, 0, sizeof(struct sbprof_tb)); sbp.sbprof_tbbuf = vmalloc(MAX_TBSAMPLE_BYTES); if (!sbp.sbprof_tbbuf) { err = -ENOMEM; goto out; sbp.open = SB_CLOSED; wmb(); return -ENOMEM; } memset(sbp.sbprof_tbbuf, 0, MAX_TBSAMPLE_BYTES); init_waitqueue_head(&sbp.tb_sync); init_waitqueue_head(&sbp.tb_read); mutex_init(&sbp.lock); sbp.open = SB_OPEN; wmb(); out: unlock_kernel(); return err; return 0; } static int sbprof_tb_release(struct inode *inode, struct file *filp) Loading @@ -440,7 +435,7 @@ static int sbprof_tb_release(struct inode *inode, struct file *filp) int minor; minor = iminor(inode); if (minor != 0 || !sbp.open) if (minor != 0 || sbp.open != SB_CLOSED) return -ENODEV; mutex_lock(&sbp.lock); Loading @@ -449,7 +444,8 @@ static int sbprof_tb_release(struct inode *inode, struct file *filp) sbprof_zbprof_stop(); vfree(sbp.sbprof_tbbuf); sbp.open = 0; sbp.open = SB_CLOSED; wmb(); mutex_unlock(&sbp.lock); Loading Loading @@ -583,7 +579,8 @@ static int __init sbprof_tb_init(void) } tb_dev = dev; sbp.open = 0; sbp.open = SB_CLOSED; wmb(); tb_period = zbbus_mhz * 10000LL; pr_info(DEVNAME ": initialized - tb_period = %lld\n", (long long) tb_period); Loading