use rt_list in rtservice.h
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2091 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
parent
5b80e102e0
commit
06d45f0c42
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
#include <dfs_fs.h>
|
#include <dfs_fs.h>
|
||||||
#include "list.h"
|
|
||||||
|
|
||||||
#include "mmcsd_core.h"
|
#include "mmcsd_core.h"
|
||||||
#include "mmcsd_cmd.h"
|
#include "mmcsd_cmd.h"
|
||||||
|
@ -359,7 +358,7 @@ rt_int32_t rt_mmcsd_blk_probe(struct rt_mmcsd_card *card)
|
||||||
|
|
||||||
rt_device_register(&blk_dev->dev, dname,
|
rt_device_register(&blk_dev->dev, dname,
|
||||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE | RT_DEVICE_FLAG_STANDALONE);
|
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE | RT_DEVICE_FLAG_STANDALONE);
|
||||||
list_insert_after(&blk_devices, &blk_dev->list);
|
rt_list_insert_after(&blk_devices, &blk_dev->list);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -396,7 +395,7 @@ rt_int32_t rt_mmcsd_blk_probe(struct rt_mmcsd_card *card)
|
||||||
|
|
||||||
rt_device_register(&blk_dev->dev, "sd0",
|
rt_device_register(&blk_dev->dev, "sd0",
|
||||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE | RT_DEVICE_FLAG_STANDALONE);
|
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE | RT_DEVICE_FLAG_STANDALONE);
|
||||||
list_insert_after(&blk_devices, &blk_dev->list);
|
rt_list_insert_after(&blk_devices, &blk_dev->list);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -428,11 +427,11 @@ void rt_mmcsd_blk_remove(struct rt_mmcsd_card *card)
|
||||||
|
|
||||||
for (l = (&blk_devices)->next; l != &blk_devices; l = l->next)
|
for (l = (&blk_devices)->next; l != &blk_devices; l = l->next)
|
||||||
{
|
{
|
||||||
blk_dev = (struct mmcsd_blk_device *)list_entry(l, struct mmcsd_blk_device, list);
|
blk_dev = (struct mmcsd_blk_device *)rt_list_entry(l, struct mmcsd_blk_device, list);
|
||||||
if (blk_dev->card == card)
|
if (blk_dev->card == card)
|
||||||
{
|
{
|
||||||
rt_device_unregister(&blk_dev->dev);
|
rt_device_unregister(&blk_dev->dev);
|
||||||
list_remove(&blk_dev->list);
|
rt_list_remove(&blk_dev->list);
|
||||||
rt_free(blk_dev);
|
rt_free(blk_dev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -440,5 +439,5 @@ void rt_mmcsd_blk_remove(struct rt_mmcsd_card *card)
|
||||||
|
|
||||||
void rt_mmcsd_blk_init(void)
|
void rt_mmcsd_blk_init(void)
|
||||||
{
|
{
|
||||||
list_init(&blk_devices);
|
rt_list_init(&blk_devices);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,106 +0,0 @@
|
||||||
/*
|
|
||||||
* File : list.h
|
|
||||||
* This file is part of RT-Thread RTOS
|
|
||||||
* COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
|
|
||||||
*
|
|
||||||
* The license and distribution terms for this file may be
|
|
||||||
* found in the file LICENSE in this distribution or at
|
|
||||||
* http://www.rt-thread.org/license/LICENSE
|
|
||||||
*
|
|
||||||
* Change Logs:
|
|
||||||
* Date Author Notes
|
|
||||||
* 2011-01-15 weety copy from kservice APIs
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __RT_LIST_H__
|
|
||||||
#define __RT_LIST_H__
|
|
||||||
|
|
||||||
#include <rtthread.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @addtogroup list
|
|
||||||
*/
|
|
||||||
/*@{*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief initialize a list
|
|
||||||
*
|
|
||||||
* @param l list to be initialized
|
|
||||||
*/
|
|
||||||
rt_inline void list_init(rt_list_t *l)
|
|
||||||
{
|
|
||||||
l->next = l->prev = l;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief insert a node after a list
|
|
||||||
*
|
|
||||||
* @param l list to insert it
|
|
||||||
* @param n new node to be inserted
|
|
||||||
*/
|
|
||||||
rt_inline void list_insert_after(rt_list_t *l, rt_list_t *n)
|
|
||||||
{
|
|
||||||
l->next->prev = n;
|
|
||||||
n->next = l->next;
|
|
||||||
|
|
||||||
l->next = n;
|
|
||||||
n->prev = l;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief insert a node before a list
|
|
||||||
*
|
|
||||||
* @param n new node to be inserted
|
|
||||||
* @param l list to insert it
|
|
||||||
*/
|
|
||||||
rt_inline void list_insert_before(rt_list_t *l, rt_list_t *n)
|
|
||||||
{
|
|
||||||
l->prev->next = n;
|
|
||||||
n->prev = l->prev;
|
|
||||||
|
|
||||||
l->prev = n;
|
|
||||||
n->next = l;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief remove node from list.
|
|
||||||
* @param n the node to remove from the list.
|
|
||||||
*/
|
|
||||||
rt_inline void list_remove(rt_list_t *n)
|
|
||||||
{
|
|
||||||
n->next->prev = n->prev;
|
|
||||||
n->prev->next = n->next;
|
|
||||||
|
|
||||||
n->next = n->prev = n;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief tests whether a list is empty
|
|
||||||
* @param l the list to test.
|
|
||||||
*/
|
|
||||||
rt_inline int list_isempty(const rt_list_t *l)
|
|
||||||
{
|
|
||||||
return l->next == l;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief get the struct for this entry
|
|
||||||
* @param node the entry point
|
|
||||||
* @param type the type of structure
|
|
||||||
* @param member the name of list in structure
|
|
||||||
*/
|
|
||||||
#define list_entry(node, type, member) \
|
|
||||||
((type *)((char *)(node) - (unsigned long)(&((type *)0)->member)))
|
|
||||||
|
|
||||||
/*@}*/
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
#include "mmcsd_core.h"
|
#include "mmcsd_core.h"
|
||||||
#include "mmcsd_cmd.h"
|
#include "mmcsd_cmd.h"
|
||||||
#include "list.h"
|
|
||||||
|
|
||||||
#ifndef RT_SDIO_STACK_SIZE
|
#ifndef RT_SDIO_STACK_SIZE
|
||||||
#define RT_SDIO_STACK_SIZE 512
|
#define RT_SDIO_STACK_SIZE 512
|
||||||
|
@ -743,16 +742,16 @@ static rt_int32_t sdio_register_card(struct rt_mmcsd_card *card)
|
||||||
}
|
}
|
||||||
|
|
||||||
sc->card = card;
|
sc->card = card;
|
||||||
list_insert_after(&sdio_cards, &sc->list);
|
rt_list_insert_after(&sdio_cards, &sc->list);
|
||||||
|
|
||||||
if (list_isempty(&sdio_drivers))
|
if (rt_list_isempty(&sdio_drivers))
|
||||||
{
|
{
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (l = (&sdio_drivers)->next; l != &sdio_drivers; l = l->next)
|
for (l = (&sdio_drivers)->next; l != &sdio_drivers; l = l->next)
|
||||||
{
|
{
|
||||||
sd = (struct sdio_driver *)list_entry(l, struct sdio_driver, list);
|
sd = (struct sdio_driver *)rt_list_entry(l, struct sdio_driver, list);
|
||||||
if (sdio_match_card(card, sd->drv->id))
|
if (sdio_match_card(card, sd->drv->id))
|
||||||
{
|
{
|
||||||
sd->drv->probe(card);
|
sd->drv->probe(card);
|
||||||
|
@ -1260,7 +1259,7 @@ static struct rt_mmcsd_card *sdio_match_driver(struct rt_sdio_device_id *id)
|
||||||
|
|
||||||
for (l = (&sdio_cards)->next; l != &sdio_cards; l = l->next)
|
for (l = (&sdio_cards)->next; l != &sdio_cards; l = l->next)
|
||||||
{
|
{
|
||||||
sc = (struct sdio_card *)list_entry(l, struct sdio_card, list);
|
sc = (struct sdio_card *)rt_list_entry(l, struct sdio_card, list);
|
||||||
card = sc->card;
|
card = sc->card;
|
||||||
|
|
||||||
if (sdio_match_card(card, id))
|
if (sdio_match_card(card, id))
|
||||||
|
@ -1284,9 +1283,9 @@ rt_int32_t sdio_register_driver(struct rt_sdio_driver *driver)
|
||||||
return -RT_ENOMEM;
|
return -RT_ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
list_insert_after(&sdio_drivers, &sd->list);
|
rt_list_insert_after(&sdio_drivers, &sd->list);
|
||||||
|
|
||||||
if (!list_isempty(&sdio_cards))
|
if (!rt_list_isempty(&sdio_cards))
|
||||||
{
|
{
|
||||||
card = sdio_match_driver(driver->id);
|
card = sdio_match_driver(driver->id);
|
||||||
if (card != RT_NULL)
|
if (card != RT_NULL)
|
||||||
|
@ -1305,11 +1304,11 @@ rt_int32_t sdio_unregister_driver(struct rt_sdio_driver *driver)
|
||||||
struct rt_mmcsd_card *card;
|
struct rt_mmcsd_card *card;
|
||||||
|
|
||||||
|
|
||||||
list_insert_after(&sdio_drivers, &sd->list);
|
rt_list_insert_after(&sdio_drivers, &sd->list);
|
||||||
|
|
||||||
for (l = (&sdio_drivers)->next; l != &sdio_drivers; l = l->next)
|
for (l = (&sdio_drivers)->next; l != &sdio_drivers; l = l->next)
|
||||||
{
|
{
|
||||||
sd = (struct sdio_driver *)list_entry(l, struct sdio_driver, list);
|
sd = (struct sdio_driver *)rt_list_entry(l, struct sdio_driver, list);
|
||||||
if (sd->drv != driver)
|
if (sd->drv != driver)
|
||||||
{
|
{
|
||||||
sd = RT_NULL;
|
sd = RT_NULL;
|
||||||
|
@ -1322,13 +1321,13 @@ rt_int32_t sdio_unregister_driver(struct rt_sdio_driver *driver)
|
||||||
return -RT_ERROR;
|
return -RT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!list_isempty(&sdio_cards))
|
if (!rt_list_isempty(&sdio_cards))
|
||||||
{
|
{
|
||||||
card = sdio_match_driver(driver->id);
|
card = sdio_match_driver(driver->id);
|
||||||
if (card != RT_NULL)
|
if (card != RT_NULL)
|
||||||
{
|
{
|
||||||
driver->remove(card);
|
driver->remove(card);
|
||||||
list_remove(&sd->list);
|
rt_list_remove(&sd->list);
|
||||||
rt_free(sd);
|
rt_free(sd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1339,7 +1338,7 @@ rt_int32_t sdio_unregister_driver(struct rt_sdio_driver *driver)
|
||||||
|
|
||||||
void rt_sdio_init(void)
|
void rt_sdio_init(void)
|
||||||
{
|
{
|
||||||
list_init(&sdio_cards);
|
rt_list_init(&sdio_cards);
|
||||||
list_init(&sdio_drivers);
|
rt_list_init(&sdio_drivers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue