The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Распечатка 4.5 Имитация функции sync

Распечатка 4.5 Имитация функции sync

Предыдущая  Содержание  Следующая V*D*V

Распечатка 4.5

 

static void dummy_flash_sync(struct mtd_info *mtd)

{

  struct map_info *map = mtd->priv;

  struct dummy_private_info_struct *priv = map->fldrv_priv;

  struct flchip *chip;

  int i;

 

  DECLARE_WAITQUEUE(wait, current);

 

  for(i=0; i< priv->number_of_chips;i++)

  {

    chip = &priv->chips[i];

again:

    spin_lock(chip->mutex);

 

    switch(chip->state)

    {

    case FL_READY:

    case FL_STATUS:

      chip->oldstate = chip->state;

      chip->state = FL_SYNCING;

      break;

    case FL_SYNCING:

      spin_unlock(chip->mutex);

      break;

    default:

      add_wait_queue(&chip->wq, &wait);

      spin_unlock(chip->mutex);

      schedule();

      remove_wait_queue(&chip->wq, &wait);

      goto again;

    }

  }

 

  for(i--; i >=0; i--)

  {

    chip = &priv->chips[i];

    spin_lock(chip->mutex);

    if(chip->state == FL_SYNCING)

    {

      chip->state = chip->oldstate;

      wake_up(&chip->wq);

    }

    spin_unlock(chip->mutex);

  }

}

 

Предыдущая  Содержание  Следующая