~ubuntu-branches/ubuntu/wily/slof/wily

« back to all changes in this revision

Viewing changes to llfw/clib/iolib.c

  • Committer: Package Import Robot
  • Author(s): Aurelien Jarno
  • Date: 2012-09-16 23:05:23 UTC
  • Revision ID: package-import@ubuntu.com-20120916230523-r2ynulqmp2tyu2e5
Tags: upstream-20120217+dfsg
ImportĀ upstreamĀ versionĀ 20120217+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/******************************************************************************
 
2
 * Copyright (c) 2004, 2008 IBM Corporation
 
3
 * All rights reserved.
 
4
 * This program and the accompanying materials
 
5
 * are made available under the terms of the BSD License
 
6
 * which accompanies this distribution, and is available at
 
7
 * http://www.opensource.org/licenses/bsd-license.php
 
8
 *
 
9
 * Contributors:
 
10
 *     IBM Corporation - initial implementation
 
11
 *****************************************************************************/
 
12
 
 
13
#include <stdint.h>
 
14
#include <stddef.h>
 
15
#include <unistd.h>
 
16
#include "iolib.h"
 
17
 
 
18
void uart_send_byte(unsigned char b)
 
19
{
 
20
        asm volatile ("":::"3","4","5","6","7");
 
21
        io_putchar(b);
 
22
}
 
23
 
 
24
/**
 
25
 * Standard write function for the libc.
 
26
 *
 
27
 * @param fd    file descriptor (should always be 1 or 2)
 
28
 * @param buf   pointer to the array with the output characters
 
29
 * @param count number of bytes to be written
 
30
 * @return      the number of bytes that have been written successfully
 
31
 */
 
32
ssize_t write(int fd, const void *buf, size_t count)
 
33
{
 
34
        size_t i;
 
35
        char *ptr = (char *)buf;
 
36
 
 
37
        if (fd != 1 && fd != 2)
 
38
                return 0;
 
39
 
 
40
        for (i = 0; i < count; i++) {
 
41
                if (*ptr == '\n')
 
42
                        uart_send_byte('\r');
 
43
                uart_send_byte(*ptr++);
 
44
        }
 
45
 
 
46
        return i;
 
47
}