Exemplo n.º 1
0
static ssize_t state_write(struct file *filp, const char *source, size_t count,
		     loff_t *ppos)
{
	struct state_dev *dev = filp->private_data;
	unsigned long flags;
	unsigned char *temp;

	if (count > STATE_BLOCK_SIZE || count <= 0)
		return -EINVAL;

	copy_from_user_ret(dev->write_buffer, source, count, -EFAULT);

	if (hijack_force_pause_player) {
		dev->write_buffer[0x0c] &= ~0x02;
	}

	/* Now we've written, switch the buffers and copy */
	save_flags_cli(flags);
	temp = dev->read_buffer;
	dev->read_buffer = dev->write_buffer;
	dev->write_buffer = temp;

	/* Mark as dirty */
	dirty=1;

	restore_flags(flags);

	memcpy(dev->write_buffer, dev->read_buffer, count);
	return count;	
}
Exemplo n.º 2
0
ci_noinline int
ioctl_resource_prime (ci_private_char_t *priv, ulong arg)
{
  ci_resource_prime_op_t local;
  copy_from_user_ret(&local, (caddr_t) arg, sizeof(local), -EFAULT);
  return efch_vi_prime(priv, local.crp_id, local.crp_current_ptr);
}
Exemplo n.º 3
0
ci_noinline int
ioctl_resource_alloc (ci_private_char_t *priv, ulong arg)
{
  int rc;
  ci_resource_alloc_t local;
  copy_from_user_ret(&local, (caddr_t) arg, sizeof(local), -EFAULT);
  rc = efch_resource_alloc(&priv->rt, &local);
  if( rc < 0 )  return rc;
  copy_to_user_ret((caddr_t) arg, &local, sizeof(local), -EFAULT);
  return rc;
}
Exemplo n.º 4
0
ci_noinline int
ioctl_resource_op (ci_private_char_t *priv, ulong arg)
{
  ci_resource_op_t local;
  int rc, copy_out = 0;
  copy_from_user_ret(&local, (caddr_t) arg, sizeof(local), -EFAULT);
  rc = efch_resource_op(&priv->rt, &local, &copy_out);
  if( copy_out )
    copy_to_user_ret((caddr_t) arg, &local, sizeof(local), -EFAULT);

  return rc;
}
Exemplo n.º 5
0
ci_noinline int
ioctl_license_challenge (ci_private_char_t *priv, ulong arg)
{
  struct ci_license_challenge_op_s local;
  int rc, copy_out = 0;
  copy_from_user_ret(&local, (caddr_t) arg, sizeof(local), -EFAULT);
  rc = efch_license_challenge(&priv->rt, &local, &copy_out);
  if( copy_out )
    copy_to_user_ret((caddr_t) arg, &local, sizeof(local), -EFAULT);

  return rc;
}