usb: class: Using unified kernel thread spawn API

Change-Id: I1e46a3414b71493875cf7f3f05af4ba4750df7c6
Signed-off-by: Sergio Rodriguez <sergio.sf.rodriguez@intel.com>
This commit is contained in:
Sergio Rodriguez 2016-11-10 14:04:20 -08:00 committed by Anas Nashif
commit 6044f05f8a
2 changed files with 26 additions and 26 deletions

View file

@ -53,11 +53,11 @@
#define MAX_PACKET MASS_STORAGE_BULK_EP_MPS
#define BLOCK_SIZE 512
#define DISK_FIBER_STACK_SZ 512
#define DISK_FIBER_PRIO -5
#define DISK_THREAD_STACK_SZ 512
#define DISK_THREAD_PRIO -5
static volatile int fiber_op;
static char __stack mass_fiber_stack[DISK_FIBER_STACK_SZ];
static volatile int thread_op;
static char __stack mass_thread_stack[DISK_THREAD_STACK_SZ];
static struct k_sem disk_wait_sem;
static volatile uint32_t defered_wr_sz;
@ -382,7 +382,7 @@ static bool readCapacity(void)
return true;
}
static void fiber_memory_read_done(void)
static void thread_memory_read_done(void)
{
uint32_t n;
@ -419,8 +419,8 @@ static void memoryRead(void)
/* we read an entire block */
if (!(addr % BLOCK_SIZE)) {
fiber_op = FIBER_OP_READ_QUEUED;
SYS_LOG_DBG("Signal fiber for %d", (addr/BLOCK_SIZE));
thread_op = THREAD_OP_READ_QUEUED;
SYS_LOG_DBG("Signal thread for %d", (addr/BLOCK_SIZE));
k_sem_give(&disk_wait_sem);
return;
}
@ -661,7 +661,7 @@ static void memoryWrite(uint8_t *buf, uint16_t size)
if (!((addr + size) % BLOCK_SIZE)) {
if (!(disk_access_status() & DISK_STATUS_WR_PROTECT)) {
SYS_LOG_DBG("Disk WRITE Qd %d", (addr/BLOCK_SIZE));
fiber_op = FIBER_OP_WRITE_QUEUED; /* write_queued */
thread_op = THREAD_OP_WRITE_QUEUED; /* write_queued */
defered_wr_sz = size;
k_sem_give(&disk_wait_sem);
return;
@ -722,7 +722,7 @@ static void mass_storage_bulk_out(uint8_t ep,
break;
}
if (fiber_op != FIBER_OP_WRITE_QUEUED) {
if (thread_op != THREAD_OP_WRITE_QUEUED) {
usb_ep_read_continue(ep);
} else {
SYS_LOG_DBG("> BO not clearing NAKs yet");
@ -730,7 +730,7 @@ static void mass_storage_bulk_out(uint8_t ep,
}
static void fiber_memory_write_done(void)
static void thread_memory_write_done(void)
{
uint32_t size = defered_wr_sz;
@ -744,7 +744,7 @@ static void fiber_memory_write_done(void)
sendCSW();
}
fiber_op = FIBER_OP_WRITE_DONE;
thread_op = THREAD_OP_WRITE_DONE;
usb_ep_read_continue(EPBULK_OUT);
}
@ -865,33 +865,33 @@ static struct usb_cfg_data mass_storage_config = {
.endpoint = mass_ep_data
};
static void mass_fiber_main(int arg1, int unused)
static void mass_thread_main(int arg1, int unused)
{
ARG_UNUSED(unused);
while (1) {
k_sem_take(&disk_wait_sem, K_FOREVER);
SYS_LOG_DBG("sem %d", fiber_op);
SYS_LOG_DBG("sem %d", thread_op);
switch (fiber_op) {
case FIBER_OP_READ_QUEUED:
switch (thread_op) {
case THREAD_OP_READ_QUEUED:
if (disk_access_read(page, (addr/BLOCK_SIZE), 1)) {
SYS_LOG_ERR("!! Disk Read Error %d !",
addr/BLOCK_SIZE);
}
fiber_memory_read_done();
thread_memory_read_done();
break;
case FIBER_OP_WRITE_QUEUED:
case THREAD_OP_WRITE_QUEUED:
if (disk_access_write(page, (addr/BLOCK_SIZE), 1)) {
SYS_LOG_ERR("!!!!! Disk Write Error %d !!!!!",
addr/BLOCK_SIZE);
}
fiber_memory_write_done();
thread_memory_write_done();
break;
default:
SYS_LOG_ERR("XXXXXX fiber_op %d ! XXXXX", fiber_op);
SYS_LOG_ERR("XXXXXX thread_op %d ! XXXXX", thread_op);
}
}
}
@ -959,10 +959,10 @@ static int mass_storage_init(struct device *dev)
k_sem_init(&disk_wait_sem, 0, 1);
/* Start a fiber to offload disk ops */
fiber_start(mass_fiber_stack, DISK_FIBER_STACK_SZ,
mass_fiber_main, 0, 0,
DISK_FIBER_PRIO, 0);
/* Start a thread to offload disk ops */
k_thread_spawn(mass_thread_stack, DISK_THREAD_STACK_SZ,
(k_thread_entry_t)mass_thread_main, NULL, NULL, NULL,
DISK_THREAD_PRIO, 0, 0);
return 0;
}

View file

@ -93,8 +93,8 @@ struct CSW {
#define MSC_REQUEST_RESET 0xFF
#define MSC_REQUEST_GET_MAX_LUN 0xFE
#define FIBER_OP_READ_QUEUED 1
#define FIBER_OP_WRITE_QUEUED 3
#define FIBER_OP_WRITE_DONE 4
#define THREAD_OP_READ_QUEUED 1
#define THREAD_OP_WRITE_QUEUED 3
#define THREAD_OP_WRITE_DONE 4
#endif /* __MASS_STORAGE_H__ */