*参照元 [#g37406da]
#backlinks

*説明 [#aa59e537]
-パス: 複数あり
--MMU が無効の場合: [[linux-2.6.33/arch/arm/mm/nommu.c]]
--MMU が有効の場合: [[linux-2.6.33/arch/arm/mm/ioremap.c]]

-FIXME: これは何?
--説明


**引数 [#h690faef]
-volatile void __iomem *io_addr
--
--[[linux-2.6.33/__iomem]]


**返り値 [#m9071ce4]
-なし


**参考 [#n870ceba]


*実装 [#p53fb3e1]
**MMU が無効の場合 [#j964010c]
 void __iounmap(volatile void __iomem *addr)
 {
 }
 EXPORT_SYMBOL(__iounmap);
-特にライセンスを区別せずシンボルを公開する。
--[[linux-2.6.33/EXPORT_SYMBOL()]]


**MMU が有効の場合 [#i764c520]
 void __iounmap(volatile void __iomem *io_addr)
 {
 	void *addr = (void *)(PAGE_MASK & (unsigned long)io_addr);
-
--[[linux-2.6.33/PAGE_MASK]]

 #ifndef CONFIG_SMP
 	struct vm_struct **p, *tmp;
 
-
--[[linux-2.6.33/vm_struct]]

 	/*
 	 * If this is a section based mapping we need to handle it
 	 * specially as the VM subsystem does not know how to handle
 	 * such a beast. We need the lock here b/c we need to clear
 	 * all the mappings before the area can be reclaimed
 	 * by someone else.
 	 */
 	write_lock(&vmlist_lock);
-
--[[linux-2.6.33/write_lock()]]
-
--[[linux-2.6.33/vmlist_lock(global)]]

 	for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) {
 		if ((tmp->flags & VM_IOREMAP) && (tmp->addr == addr)) {
-
--[[linux-2.6.33/VM_IOREMAP]]

 			if (tmp->flags & VM_ARM_SECTION_MAPPING) {
-
--[[linux-2.6.33/VM_ARM_SECTION_MAPPING]]

 				unmap_area_sections((unsigned long)tmp->addr,
 						    tmp->size);
-
--[[linux-2.6.33/unmap_area_sections()]]

 			}
 			break;
 		}
 	}
 	write_unlock(&vmlist_lock);
-
--[[linux-2.6.33/write_unlock()]]

 #endif
 
 	vunmap(addr);
-
--[[linux-2.6.33/vunmap()]]

 }
 EXPORT_SYMBOL(__iounmap);
-特にライセンスを区別せずシンボルを公開する。
--[[linux-2.6.33/EXPORT_SYMBOL()]]


*コメント [#ld413e61]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS