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

View file

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