Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1719 → Rev 1718

/uspace/trunk/fb/sysio.c
120,66 → 120,64
ipc_answer_fast(iid, ELIMIT, 0,0);
return;
}
client_connected = 1;
ipc_answer_fast(iid, 0, 0, 0); /* Accept connection */
while (1) {
callid = async_get_call(&call);
switch (IPC_GET_METHOD(call)) {
case IPC_M_PHONE_HUNGUP:
client_connected = 0;
ipc_answer_fast(callid, 0, 0, 0);
return; /* Exit thread */
case FB_PUTCHAR:
c = IPC_GET_ARG1(call);
newrow = IPC_GET_ARG2(call);
newcol = IPC_GET_ARG3(call);
if ((lastcol != newcol) || (lastrow != newrow))
curs_goto(newrow, newcol);
lastcol = newcol + 1;
lastrow = newrow;
sysput(c);
retval = 0;
break;
case FB_CURSOR_GOTO:
newrow = IPC_GET_ARG1(call);
newcol = IPC_GET_ARG2(call);
switch (IPC_GET_METHOD(call)) {
case IPC_M_PHONE_HUNGUP:
client_connected = 0;
ipc_answer_fast(callid,0,0,0);
return; /* Exit thread */
case FB_PUTCHAR:
c = IPC_GET_ARG1(call);
newrow = IPC_GET_ARG2(call);
newcol = IPC_GET_ARG3(call);
if (lastcol != newcol || lastrow!=newrow)
curs_goto(newrow, newcol);
lastrow = newrow;
lastcol = newcol;
retval = 0;
lastcol = newcol + 1;
lastrow = newrow;
sysput(c);
retval = 0;
break;
case FB_CURSOR_GOTO:
newrow = IPC_GET_ARG1(call);
newcol = IPC_GET_ARG2(call);
curs_goto(newrow, newcol);
lastrow = newrow;
lastcol = newcol;
break;
case FB_GET_CSIZE:
ipc_answer_fast(callid, 0, HEIGHT, WIDTH);
continue;
case FB_CLEAR:
clrscr();
retval = 0;
break;
case FB_SET_STYLE:
fgcolor = IPC_GET_ARG1(call);
bgcolor = IPC_GET_ARG2(call);
if (fgcolor < bgcolor)
set_style(0);
else
set_style(7);
retval = 0;
break;
case FB_SCROLL:
i = IPC_GET_ARG1(call);
if (i > HEIGHT || i < -HEIGHT) {
retval = EINVAL;
break;
case FB_GET_CSIZE:
ipc_answer_fast(callid, 0, HEIGHT, WIDTH);
continue;
case FB_CLEAR:
clrscr();
retval = 0;
break;
case FB_SET_STYLE:
fgcolor = IPC_GET_ARG1(call);
bgcolor = IPC_GET_ARG2(call);
if (fgcolor < bgcolor)
set_style(0);
else
set_style(7);
retval = 0;
break;
case FB_SCROLL:
i = IPC_GET_ARG1(call);
if ((i > HEIGHT) || (i < -HEIGHT)) {
retval = EINVAL;
break;
}
scroll(i);
curs_goto(lastrow, lastcol);
retval = 0;
break;
default:
retval = ENOENT;
}
scroll(i);
curs_goto(lastrow, lastcol);
retval = 0;
break;
 
default:
retval = ENOENT;
}
ipc_answer_fast(callid, retval, 0, 0);
ipc_answer_fast(callid,retval,0,0);
}
}
 
195,4 → 193,5
 
/**
* @}
*/
*/
 
/uspace/trunk/libc/generic/psthread.c
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
51,6 → 51,7
static LIST_INITIALIZE(serialized_list);
static LIST_INITIALIZE(manager_list);
 
static void psthread_exit(void) __attribute__ ((noinline));
static void psthread_main(void);
 
static atomic_t psthread_futex = FUTEX_INITIALIZER;
190,7 → 191,7
*/
int psthread_join(pstid_t psthrid)
{
volatile psthread_data_t *pt;
volatile psthread_data_t *pt, *mypt;
volatile int retval;
 
/* Handle psthrid = Kernel address -> it is wait for call */
237,7 → 238,8
pt->flags = 0;
 
context_save(&pt->ctx);
context_set(&pt->ctx, FADDR(psthread_main), pt->stack, PSTHREAD_INITIAL_STACK_PAGES_NO*getpagesize(), pt->tcb);
context_set(&pt->ctx, FADDR(psthread_main), pt->stack, PSTHREAD_INITIAL_STACK_PAGES_NO*getpagesize(),
pt->tcb);
 
return (pstid_t )pt;
}
305,5 → 307,7
}
 
 
/** @}
/** @}
*/
/uspace/trunk/libc/generic/time.c
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
73,7 → 73,9
if (!ktime) {
mapping = as_get_mappable_page(PAGE_SIZE);
/* Get the mapping of kernel clock */
res = ipc_call_sync_3(PHONE_NS, IPC_M_AS_AREA_RECV, (sysarg_t) mapping, PAGE_SIZE, SERVICE_MEM_REALTIME, NULL, &rights, NULL);
res = ipc_call_sync_3(PHONE_NS, IPC_M_AS_AREA_RECV,
mapping, PAGE_SIZE, SERVICE_MEM_REALTIME,
NULL,&rights,NULL);
if (res) {
printf("Failed to initialize timeofday memarea\n");
_exit(1);
115,5 → 117,7
}
 
 
/** @}
/** @}
*/
/uspace/trunk/libc/generic/async.c
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
373,13 → 373,11
/* Setup thread local connection pointer */
PS_connection = (connection_t *)arg;
PS_connection->cthread(PS_connection->callid, &PS_connection->call);
/* Remove myself from connection hash table */
futex_down(&async_futex);
key = PS_connection->in_phone_hash;
hash_table_remove(&conn_hash_table, &key, 1);
futex_up(&async_futex);
/* Answer all remaining messages with ehangup */
while (!list_empty(&PS_connection->msg_queue)) {
msg = list_get_instance(PS_connection->msg_queue.next, msg_t, link);
391,8 → 389,6
}
if (PS_connection->close_callid)
ipc_answer_fast(PS_connection->close_callid, 0, 0, 0);
return 0;
}
 
/** Create new thread for a new connection
409,8 → 405,11
* opening the connection
* @return New thread id
*/
pstid_t async_new_connection(ipcarg_t in_phone_hash,ipc_callid_t callid, ipc_call_t *call, void (*cthread)(ipc_callid_t, ipc_call_t *))
pstid_t async_new_connection(ipcarg_t in_phone_hash,ipc_callid_t callid,
ipc_call_t *call,
void (*cthread)(ipc_callid_t,ipc_call_t *))
{
pstid_t ptid;
connection_t *conn;
unsigned long key;
 
515,10 → 514,9
 
while (1) {
if (psthread_schedule_next_adv(PS_FROM_MANAGER)) {
futex_up(&async_futex);
/* async_futex is always held
* when entering manager thread
*/
futex_up(&async_futex); /* async_futex is always held
* when entering manager thread
*/
continue;
}
futex_down(&async_futex);
548,8 → 546,6
 
handle_call(callid, &call);
}
return 0;
}
 
/** Function to start async_manager as a standalone thread
561,12 → 557,9
*/
static int async_manager_thread(void *arg)
{
futex_up(&async_futex);
/* async_futex is always locked when entering
* manager */
futex_up(&async_futex); /* async_futex is always locked when entering
* manager */
async_manager_worker();
return 0;
}
 
/** Add one manager to manager list */
592,7 → 585,6
return ENOMEM;
}
return 0;
}
 
/** IPC handler for messages in async framework
687,6 → 679,7
void async_wait_for(aid_t amsgid, ipcarg_t *retval)
{
amsg_t *msg = (amsg_t *) amsgid;
connection_t *conn;
 
futex_down(&async_futex);
if (msg->done) {
718,6 → 711,7
int async_wait_timeout(aid_t amsgid, ipcarg_t *retval, suseconds_t timeout)
{
amsg_t *msg = (amsg_t *) amsgid;
connection_t *conn;
 
/* TODO: Let it go through the event read at least once */
if (timeout < 0)
808,5 → 802,7
}
 
 
/** @}
/** @}
*/
/uspace/trunk/libc/generic/libc.c
25,16 → 25,15
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup lc Libc
* @brief HelenOS C library
/** @addtogroup lc Libc
* @brief HelenOS C library
* @{
* @}
*/
/** @addtogroup libc generic
* @ingroup lc
* @{
* @}
*/
/** @addtogroup libc generic
* @ingroup lc
* @{
*/
/** @file
*/
 
50,13 → 49,11
 
extern char _heap;
 
void _exit(int status)
{
void _exit(int status) {
thread_exit(status);
}
 
void __main(void)
{
void __main(void) {
psthread_data_t *pt;
 
(void) as_area_create(&_heap, 1, AS_AREA_WRITE | AS_AREA_READ);
65,18 → 62,19
__tcb_set(pt->tcb);
}
 
void __io_init(void)
{
void __io_init(void) {
open("stdin", 0);
open("stdout", 0);
open("stderr", 0);
}
 
void __exit(void)
{
void __exit(void) {
psthread_teardown(__tcb_get()->pst_data);
_exit(0);
}
 
/** @}
 
/** @}
*/
/uspace/trunk/libc/generic/ddi.c
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
69,6 → 69,7
*/
int iospace_enable(task_id_t id, void *ioaddr, unsigned long size)
{
task_id_t task_id;
ddi_ioarg_t arg;
 
arg.task_id = id;
88,5 → 89,7
}
 
 
/** @}
/** @}
*/
/uspace/trunk/libc/generic/cap.c
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/**
52,7 → 52,7
arg.value = (unsigned long long) id;
 
return __SYSCALL2(SYS_CAP_GRANT, (sysarg_t) &arg, (sysarg_t) caps);
__SYSCALL2(SYS_CAP_GRANT, (sysarg_t) &arg, (sysarg_t) caps);
}
 
/** Revoke capabilities from a task.
68,9 → 68,11
arg.value = (unsigned long long) id;
 
return __SYSCALL2(SYS_CAP_REVOKE, (sysarg_t) &arg, (sysarg_t) caps);
__SYSCALL2(SYS_CAP_REVOKE, (sysarg_t) &arg, (sysarg_t) caps);
}
 
 
/** @}
/** @}
*/
/uspace/trunk/libc/generic/as.c
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
75,7 → 75,7
}
 
static size_t heapsize = 0;
static size_t maxheapsize = (size_t) (-1);
static size_t maxheapsize = (size_t)(-1);
 
static void * last_allocated = 0;
 
92,29 → 92,24
{
int rc;
void *res;
/* Check for invalid values */
if (incr < 0 && -incr > heapsize)
return NULL;
/* Check for too large value */
if (incr > 0 && incr+heapsize < heapsize)
return NULL;
/* Check for too small values */
if (incr < 0 && incr+heapsize > heapsize)
return NULL;
/* Check for user limit */
if ((maxheapsize != (size_t) (-1)) && (heapsize + incr) > maxheapsize)
return NULL;
rc = as_area_resize(&_heap, heapsize + incr, 0);
if ((maxheapsize!=(size_t)(-1)) && (heapsize + incr)>maxheapsize) return NULL;
 
rc = as_area_resize(&_heap, heapsize + incr,0);
if (rc != 0)
return NULL;
/* Compute start of new area */
res = (void *) &_heap + heapsize;
res = (void *)&_heap + heapsize;
 
heapsize += incr;
 
124,9 → 119,9
/** Set maximum heap size and return pointer just after the heap */
void *set_maxheapsize(size_t mhs)
{
maxheapsize = mhs;
maxheapsize=mhs;
/* Return pointer to area not managed by sbrk */
return ((void *) &_heap + maxheapsize);
return (void *)&_heap + maxheapsize;
 
}
 
141,10 → 136,9
 
/* Set heapsize to some meaningful value */
if (maxheapsize == -1)
set_maxheapsize(ALIGN_UP(USER_ADDRESS_SPACE_SIZE_ARCH >> 1, PAGE_SIZE));
set_maxheapsize(ALIGN_UP(USER_ADDRESS_SPACE_SIZE_ARCH>>1,PAGE_SIZE));
if (!last_allocated)
last_allocated = (void *) ALIGN_UP((void *) &_heap + maxheapsize, PAGE_SIZE);
last_allocated = ALIGN_UP((void *)&_heap + maxheapsize, PAGE_SIZE);
sz = ALIGN_UP(sz, PAGE_SIZE);
res = last_allocated;
153,5 → 147,8
return res;
}
 
/** @}
 
/** @}
*/
/uspace/trunk/libc/generic/string.c
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
41,52 → 41,48
 
/* Dummy implementation of mem/ functions */
 
void *memset(void *s, int c, size_t n)
void * memset(void *s, int c, size_t n)
{
char *os = s;
while (n--)
*(os++) = c;
return s;
}
 
struct along {
unsigned long n;
} __attribute__ ((packed));
struct along {unsigned long n; } __attribute__ ((packed));
 
static void *unaligned_memcpy(void *dst, const void *src, size_t n)
static void * unaligned_memcpy(void *dst, const void *src, size_t n)
{
int i, j;
struct along *adst = dst;
const struct along *asrc = src;
 
for (i = 0; i < n / sizeof(unsigned long); i++)
for (i = 0; i < n/sizeof(unsigned long); i++)
adst[i].n = asrc[i].n;
for (j = 0; j < n % sizeof(unsigned long); j++)
((unsigned char *) (((unsigned long *) dst) + i))[j] = ((unsigned char *) (((unsigned long *) src) + i))[j];
for (j = 0; j < n%sizeof(unsigned long); j++)
((unsigned char *)(((unsigned long *) dst) + i))[j] = ((unsigned char *)(((unsigned long *) src) + i))[j];
return (char *) src;
return (char *)src;
}
 
void *memcpy(void *dst, const void *src, size_t n)
void * memcpy(void *dst, const void *src, size_t n)
{
int i, j;
 
if (((long) dst & (sizeof(long) - 1)) || ((long) src & (sizeof(long) - 1)))
if (((long)dst & (sizeof(long)-1)) || ((long)src & (sizeof(long)-1)))
return unaligned_memcpy(dst, src, n);
 
for (i = 0; i < n / sizeof(unsigned long); i++)
for (i = 0; i < n/sizeof(unsigned long); i++)
((unsigned long *) dst)[i] = ((unsigned long *) src)[i];
for (j = 0; j < n % sizeof(unsigned long); j++)
((unsigned char *) (((unsigned long *) dst) + i))[j] = ((unsigned char *) (((unsigned long *) src) + i))[j];
for (j = 0; j < n%sizeof(unsigned long); j++)
((unsigned char *)(((unsigned long *) dst) + i))[j] = ((unsigned char *)(((unsigned long *) src) + i))[j];
return (char *) src;
return (char *)src;
}
 
void *memmove(void *dst, const void *src, size_t n)
void * memmove(void *dst, const void *src, size_t n)
{
int i, j;
93,13 → 89,13
if (src > dst)
return memcpy(dst, src, n);
 
for (j = (n % sizeof(unsigned long)) - 1; j >= 0; j--)
((unsigned char *) ((unsigned long *) dst))[j] = ((unsigned char *) ((unsigned long *) src))[j];
for (j = (n%sizeof(unsigned long))-1; j >= 0; j--)
((unsigned char *)(((unsigned long *) dst) + i))[j] = ((unsigned char *)(((unsigned long *) src) + i))[j];
 
for (i = n / sizeof(unsigned long) - 1; i >=0 ; i--)
for (i = n/sizeof(unsigned long)-1; i >=0 ; i--)
((unsigned long *) dst)[i] = ((unsigned long *) src)[i];
return (char *) src;
return (char *)src;
}
 
 
111,24 → 107,25
{
size_t counter = 0;
 
while (str[counter] != 0)
while (str[counter] != 0) {
counter++;
}
 
return counter;
}
 
int strcmp(const char *a, const char *b)
int strcmp(const char *a,const char *b)
{
int c = 0;
int c=0;
while (a[c] && b[c] && (!(a[c] - b[c])))
c++;
while(a[c]&&b[c]&&(!(a[c]-b[c]))) c++;
return (a[c] - b[c]);
return a[c]-b[c];
}
 
 
 
/** Return pointer to the first occurence of character c in string
* @param str scanned string
* @param c searched character (taken as one byte)
137,8 → 134,8
char *strchr(const char *str, int c)
{
while (*str != '\0') {
if (*str == (char) c)
return (char *) str;
if (*str == (char)c)
return (char *)str;
str++;
}
 
155,12 → 152,12
char *retval = NULL;
 
while (*str != '\0') {
if (*str == (char) c)
retval = (char *) str;
if (*str == (char)c)
retval = (char *)str;
str++;
}
 
return (char *) retval;
return (char *)retval;
}
 
/** Convert string to a number.
212,7 → 209,7
 
while (*str) {
c = *str;
c = (c >= 'a' ? c - 'a' + 10 : (c >= 'A' ? c - 'A' + 10 : (c <= '9' ? c - '0' : 0xff)));
c = ( c >= 'a'? c-'a'+10:(c >= 'A'?c-'A'+10:(c <= '9'?c-'0':0xff)));
if (c > base) {
break;
}
238,7 → 235,7
}
if (endptr)
*endptr = (char *) str;
*endptr = (char *)str;
 
if (nptr == str) {
/*FIXME: errno = EINVAL*/
266,15 → 263,15
number = _strtoul(nptr, endptr, base, &sgn);
 
if (number > LONG_MAX) {
if ((sgn) && (number == (unsigned long) (LONG_MAX) + 1)) {
if ((sgn) && (number == (unsigned long)(LONG_MAX) + 1)) {
/* FIXME: set 0 to errno */
return number;
}
/* FIXME: set ERANGE to errno */
return (sgn ? LONG_MIN : LONG_MAX);
return (sgn?LONG_MIN:LONG_MAX);
}
return (sgn ? -number : number);
return (sgn?-number:number);
}
 
 
295,25 → 292,23
number = _strtoul(nptr, endptr, base, &sgn);
 
return (sgn ? -number : number);
return (sgn?-number:number);
}
 
char *strcpy(char *dest, const char *src)
{
char *orig = dest;
while ((*(dest++) = *(src++)));
return orig;
while (*(dest++) = *(src++))
;
}
 
char *strncpy(char *dest, const char *src, size_t n)
{
char *orig = dest;
while ((*(dest++) = *(src++)) && --n);
return orig;
while ((*(dest++) = *(src++)) && --n)
;
}
 
 
/** @}
/** @}
*/
/uspace/trunk/libc/generic/io/stream.c
27,7 → 27,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
73,7 → 73,7
if (async_req_2(streams[0].phone, CONSOLE_GETCHAR, 0, 0, &r0, &r1) < 0) {
return -1;
}
((char *) buf)[i++] = r0;
((char *)buf)[i++] = r0;
}
return i;
}
81,17 → 81,21
static ssize_t write_stdout(void *param, const void *buf, size_t count)
{
int i;
ipcarg_t r0,r1;
 
for (i = 0; i < count; i++)
async_msg(streams[1].phone, CONSOLE_PUTCHAR, ((const char *) buf)[i]);
async_msg(streams[1].phone, CONSOLE_PUTCHAR, ((const char *)buf)[i]);
return count;
}
 
 
 
static stream_t open_stdin(void)
{
stream_t stream;
int phoneid;
int res;
if (console_phone < 0) {
while ((console_phone = ipc_connect_me_to(PHONE_NS, SERVICE_CONSOLE, 0)) < 0) {
100,7 → 104,6
}
stream.r = read_stdin;
stream.w = NULL;
stream.param = 0;
stream.phone = console_phone;
110,6 → 113,7
static stream_t open_stdout(void)
{
stream_t stream;
int res;
 
if (console_phone < 0) {
while ((console_phone = ipc_connect_me_to(PHONE_NS, SERVICE_CONSOLE, 0)) < 0) {
117,11 → 121,9
}
}
stream.r = NULL;
stream.w = write_stdout;
stream.phone = console_phone;
stream.param = 0;
return stream;
}
 
137,7 → 139,6
 
while (((streams[c].w) || (streams[c].r)) && (c < FDS))
c++;
if (c == FDS)
return EMFILE;
155,13 → 156,10
streams[c].w = write_stderr;
return c;
}
if (!strcmp(fname, "null")) {
streams[c].w = write_null;
return c;
}
return -1;
}
 
 
191,5 → 189,7
}
 
 
/** @}
/** @}
*/
/uspace/trunk/libc/generic/err.c
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
35,13 → 35,14
#include <stdio.h>
#include <stdlib.h>
 
/* TODO
void errx(int __status, __const char *__format, ...)
void errx (int __status, __const char *__format, ...)
{
printf("TODO...errx\n");
_exit(0);
}
*/
 
 
/** @}
/** @}
*/
/uspace/trunk/libc/generic/mmap.c
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
36,8 → 36,11
#include <as.h>
#include <unistd.h>
 
void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset)
void *mmap(void *start, size_t length, int prot, int flags, int fd,
off_t offset)
{
int rc;
 
if (!start)
start = as_get_mappable_page(length);
55,5 → 58,7
}
 
 
/** @}
/** @}
*/
/uspace/trunk/libc/include/err.h
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
35,13 → 35,12
#ifndef _libc__ERR_H_
#define _libc__ERR_H_
 
#define errx(status, fmt, ...) { \
printf((fmt), ##__VA_ARGS__); \
_exit(status); \
}
#define errx(status,fmt,...) { printf((fmt),##__VA_ARGS__);_exit(status);}
 
#endif
 
 
/** @}
/** @}
*/
/uspace/trunk/libc/include/libc.h
26,7 → 26,7
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup libc
/** @addtogroup libc
* @{
*/
/** @file
41,16 → 41,20
#define __SYSCALL0(id) __syscall(0, 0, 0, 0, id)
#define __SYSCALL1(id, p1) __syscall(p1, 0, 0, 0, id)
#define __SYSCALL2(id, p1, p2) __syscall(p1, p2, 0, 0, id)
#define __SYSCALL3(id, p1, p2, p3) __syscall(p1, p2, p3, 0, id)
#define __SYSCALL4(id, p1, p2, p3, p4) __syscall(p1, p2, p3, p4, id)
#define __SYSCALL3(id, p1, p2, p3) __syscall(p1,p2,p3, 0, id)
#define __SYSCALL4(id, p1, p2, p3, p4) __syscall(p1,p2,p3,p4,id)
 
extern void __main(void);
extern void __io_init(void);
extern void __exit(void);
extern sysarg_t __syscall(const sysarg_t p1, const sysarg_t p2, const sysarg_t p3, const sysarg_t p4, const syscall_t id);
extern sysarg_t __syscall(const sysarg_t p1, const sysarg_t p2,
const sysarg_t p3, const sysarg_t p4,
const syscall_t id);
 
 
#endif
 
/** @}
 
/** @}
*/
/uspace/trunk/libc/Makefile.toolchain
27,7 → 27,7
#
 
DEFS = -DARCH=$(ARCH)
CFLAGS = -fno-builtin -Wall -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -nostdlib -nostdinc -I$(LIBC_PREFIX)/include
CFLAGS = -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -O3 -nostdlib -nostdinc -I$(LIBC_PREFIX)/include
LFLAGS = -M -N $(SOFTINT_PREFIX)/libsoftint.a
AFLAGS =
#-Werror
/uspace/trunk/libc/malloc/malloc.c
2930,9 → 2930,10
if (HAVE_MMAP &&
sp->size >= extra &&
!has_segment_link(m, sp)) { /* can't shrink if pinned */
size_t newsize = sp->size - extra;
/* Prefer mremap, fall back to munmap */
if ((CALL_MREMAP(sp->base, sp->size, sp->size - extra, 0) != MFAIL) ||
(CALL_MUNMAP(sp->base + sp->size - extra, extra) == 0)) {
if ((CALL_MREMAP(sp->base, sp->size, newsize, 0) != MFAIL) ||
(CALL_MUNMAP(sp->base + newsize, extra) == 0)) {
released = extra;
}
}
/uspace/trunk/ns/ns.c
81,6 → 81,8
ipcarg_t in_phone_hash; /**< Incoming phone hash. */
} hashed_service_t;
 
int static ping_phone;
 
static void *clockaddr = NULL;
static void *klogaddr = NULL;
 
104,8 → 106,9
{
ipc_call_t call;
ipc_callid_t callid;
char *as_area;
ipcarg_t retval;
ipcarg_t retval, arg1, arg2;
 
if (!hash_table_create(&ns_hash_table, NS_HASH_TABLE_CHAINS, 3, &ns_hash_table_ops)) {
return ENOMEM;
146,7 → 149,7
break;
}
if (! (callid & IPC_CALLID_NOTIFICATION)) {
ipc_answer_fast(callid, retval, 0, 0);
ipc_answer_fast(callid, retval, arg1, arg2);
}
}
}
254,7 → 257,6
assert(item);
free(hash_table_get_instance(item, hashed_service_t, link));
}
 
/**
* @}
*/