diff --git a/apps/laplace.c b/apps/laplace.c index f017f89b..91f9e407 100644 --- a/apps/laplace.c +++ b/apps/laplace.c @@ -142,7 +142,7 @@ int laplace(void *arg) NewValues = (volatile DATA **)kmalloc((N + 2) * sizeof(DATA *)); #if USE_STRONG NewValues[0] = (DATA *) svmmalloc((N + 2) * (M + 2) * sizeof(DATA), SVM_STRONG); -#elif USE_LATYRELEASE +#elif USE_LAZYRELEASE NewValues[0] = (DATA *) svmmalloc((N + 2) * (M + 2) * sizeof(DATA), SVM_LAZYRELEASE); #else NewValues[0] = (DATA *) kmalloc((N + 2) * (M + 2) * sizeof(DATA)); @@ -151,7 +151,7 @@ int laplace(void *arg) OldValues = (volatile DATA **)kmalloc((N + 2) * sizeof(DATA *)); #if USE_STRONG OldValues[0] = (DATA *) svmmalloc((N + 2) * (M + 2) * sizeof(DATA), SVM_STRONG); -#elif USE_LATYRELEASE +#elif USE_LAZYRELEASE OldValues[0] = (DATA *) svmmalloc((N + 2) * (M + 2) * sizeof(DATA), SVM_LAZYRELEASE); #else OldValues[0] = (DATA *) kmalloc((N + 2) * (M + 2) * sizeof(DATA)); @@ -223,17 +223,11 @@ int laplace(void *arg) for (i = 1; i < n + 1; i++) { // over all rows for (j = 1; j < m + 1; j++) { -#if 1 NewValues[I + i][J + j] = (OldValues[I + i - 1][J + j] + OldValues[I + i + 1][J + j] + OldValues[I + i][J + j - 1] + OldValues[I + i][J + j + 1]) / 4; - //if ( NewValues[I+i][J+j] < 0.0 ) NewValues[I+i][J+j] = 0.0 * FIX; - //else if ( NewValues[I+i][J+j] > 255.0 ) NewValues[I+i][J+j] = 255.0 * FIX; -#else - NewValues[I + i][J + j] = 25 * (DATA) (my_rank + 1); -#endif } } #if USE_LAZYRELEASE @@ -245,7 +239,6 @@ int laplace(void *arg) NewValues = OldValues; OldValues = tmp; - //RCCE_TNS_barrier(&RCCE_COMM_WORLD); RCCE_barrier(&RCCE_COMM_WORLD); #ifdef _USE_GFX @@ -269,6 +262,8 @@ int laplace(void *arg) GFX_draw_data((char *)(BufValues[0]), (N) * (M)); GFX_update(); } + + RCCE_barrier(&RCCE_COMM_WORLD); #endif // END ITERATIONS LOOP } diff --git a/arch/x86/scc/iRCCE_mailbox.c b/arch/x86/scc/iRCCE_mailbox.c index 958194a8..1ca67c1f 100644 --- a/arch/x86/scc/iRCCE_mailbox.c +++ b/arch/x86/scc/iRCCE_mailbox.c @@ -159,7 +159,7 @@ static int iRCCE_mail_fetch( * write out the data. */ //------------------------------------------------------------------------------ -iRCCE_MAIL_HEADER dummy_header = {0, 0, 0, NULL, 0, 0, 0, {[0 ... iRCCE_MAIL_HEADER_PAYLOAD-1] = 0} }; +static iRCCE_MAIL_HEADER dummy_header = {0, 0, 0, NULL, 0, 0, 0, {[0 ... iRCCE_MAIL_HEADER_PAYLOAD-1] = 0} }; static int iRCCE_mailbox_check(void) { diff --git a/drivers/char/socket.c b/drivers/char/socket.c index d8af0ba3..8210c249 100755 --- a/drivers/char/socket.c +++ b/drivers/char/socket.c @@ -116,7 +116,7 @@ int socket_init(vfs_node_t* node, const char* name) return -ENOMEM; memset(new_node, 0x00, sizeof(vfs_node_t)); - new_node->type = FS_CHARDEVICE; + new_node->type = FS_SOCKET; new_node->open = &socket_open; new_node->close = &socket_close; new_node->read = &socket_read; diff --git a/fs/fs.c b/fs/fs.c index ae55c137..3ee533dc 100644 --- a/fs/fs.c +++ b/fs/fs.c @@ -34,11 +34,16 @@ ssize_t read_fs(fildes_t* file, uint8_t* buffer, size_t size) if (BUILTIN_EXPECT(!node || !buffer, 0)) return ret; - spinlock_lock(&node->lock); - // Has the node got a read callback? + if (node->type != FS_SOCKET) { + spinlock_lock(&node->lock); + // Has the node got a read callback? + if (node->read != 0) + ret = node->read(file, buffer, size); + spinlock_unlock(&node->lock); + } else { if (node->read != 0) ret = node->read(file, buffer, size); - spinlock_unlock(&node->lock); + } return ret; } @@ -51,11 +56,16 @@ ssize_t write_fs(fildes_t* file, uint8_t* buffer, size_t size) if (BUILTIN_EXPECT(!node || !buffer, 0)) return ret; - spinlock_lock(&node->lock); - // Has the node got a write callback? + if (node->type != FS_SOCKET) { + spinlock_lock(&node->lock); + // Has the node got a write callback? + if (node->write != 0) + ret = node->write(file, buffer, size); + spinlock_unlock(&node->lock); + } else { if (node->write != 0) ret = node->write(file, buffer, size); - spinlock_unlock(&node->lock); + } return ret; } diff --git a/include/metalsvm/fs.h b/include/metalsvm/fs.h index 8d3736fd..1665b4ad 100644 --- a/include/metalsvm/fs.h +++ b/include/metalsvm/fs.h @@ -29,12 +29,13 @@ #include #include -#define FS_FILE 0x01 -#define FS_DIRECTORY 0x02 -#define FS_CHARDEVICE 0x03 +#define FS_FILE 0x01 +#define FS_DIRECTORY 0x02 +#define FS_CHARDEVICE 0x03 //#define FS_BLOCKDEVICE 0x04 //#define FS_PIPE 0x05 //#define FS_SYMLINK 0x06 +#define FS_SOCKET 0x06 //#define FS_MOUNTPOINT 0x08 // Is the file an active mountpoint? diff --git a/kernel/tasks.c b/kernel/tasks.c index 7d00b2b5..206823e7 100644 --- a/kernel/tasks.c +++ b/kernel/tasks.c @@ -1108,13 +1108,13 @@ void update_load(void) spinlock_irqsave_lock(&runqueues[core_id].lock); runqueues[core_id].load[0] *= EXP_1; - runqueues[core_id].load[0] += (runqueues[core_id].nr_tasks *FIXED_1) * (FIXED_1 - EXP_1); + runqueues[core_id].load[0] += (runqueues[core_id].nr_tasks * FIXED_1) * (FIXED_1 - EXP_1); runqueues[core_id].load[0] >>= FSHIFT; runqueues[core_id].load[1] *= EXP_5; - runqueues[core_id].load[1] += (runqueues[core_id].nr_tasks *FIXED_1) * (FIXED_1 - EXP_5); + runqueues[core_id].load[1] += (runqueues[core_id].nr_tasks * FIXED_1) * (FIXED_1 - EXP_5); runqueues[core_id].load[1] >>= FSHIFT; runqueues[core_id].load[2] *= EXP_15; - runqueues[core_id].load[2] += (runqueues[core_id].nr_tasks *FIXED_1) * (FIXED_1 - EXP_15); + runqueues[core_id].load[2] += (runqueues[core_id].nr_tasks * FIXED_1) * (FIXED_1 - EXP_15); runqueues[core_id].load[2] >>= FSHIFT; spinlock_irqsave_unlock(&runqueues[core_id].lock);