question about mmc_rescan function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
I found the mmc_rescan function is called periodically. 
and the only place I can see the name is this line below in the mmc_alloc_host function 
INIT_DELAYED_WORK(&host->detect, mmc_rescan);
so it is regsitered as a delayed work in mmc_host.
And at the end of mmc_rescan, I see 
mmc_schedule_delayed_work(&host->detect, HZ);
Q1 : Is this how it is called periodically every second? I guess so..

In the SD host driver, in initial slot initialization, there is 
mcc_host_add which eventually schedules mmc_rescan.
(mmc_add_host -> mmc_start_host -> mmc_detect_change -> mmc_schedule_delayed_work(&host->detect, delay))

and  towards the end of this initial slot initialization, there is 
queue_work(my_workqueue, &host->card_work);
And the card_work is a function supposed to be called when a card is inserted or removed.
In the card_work, there is at the end 
mmc_detect_change(slot->mmc, msecs_to_jiffies(host->pdata->detect_delay_ms));
and inside mmc_detect_change, mmc_schedule_delayed_work(&host->detect, delay); is called which is mmc_rescan.


Q2 : Is there something wrong (mmc_rescan is started and schedule itself by mmc_add_host, but it is started by another card_work)? I tried removing queue_work and it still seems to work..

can anybody confirm or tell me anything?
 best regards,
Chan
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux