comparison examples/serial.c @ 168:ead06911cbae

Add up-to-date examples
author jlarmour
date Wed, 04 Jul 2001 17:34:09 +0000
parents
children
comparison
equal deleted inserted replaced
167:59f91bb9f684 168:ead06911cbae
1 /*
2 * Written 1999-03-19 by Jonathan Larmour, Cygnus Solutions
3 * This file is in the public domain and may be used for any purpose
4 */
5
6 /* CONFIGURATION CHECKS */
7
8 #include <pkgconf/system.h> /* which packages are enabled/disabled */
9 #ifdef CYGPKG_KERNEL
10 # include <pkgconf/kernel.h>
11 #endif
12 #ifdef CYGPKG_LIBC
13 # include <pkgconf/libc.h>
14 #endif
15 #ifdef CYGPKG_IO_SERIAL
16 # include <pkgconf/io_serial.h>
17 #endif
18
19 #ifndef CYGFUN_KERNEL_API_C
20 # error Kernel API must be enabled to build this example
21 #endif
22
23 #ifndef CYGPKG_LIBC_STDIO
24 # error C library standard I/O must be enabled to build this example
25 #endif
26
27 #ifndef CYGPKG_IO_SERIAL_HALDIAG
28 # error I/O HALDIAG pseudo-device driver must be enabled to build this example
29 #endif
30
31 /* INCLUDES */
32
33 #include <stdio.h> /* printf */
34 #include <string.h> /* strlen */
35 #include <cyg/kernel/kapi.h> /* All the kernel specific stuff */
36 #include <cyg/io/io.h> /* I/O functions */
37 #include <cyg/hal/hal_arch.h> /* CYGNUM_HAL_STACK_SIZE_TYPICAL */
38
39
40
41 /* DEFINES */
42
43 #define NTHREADS 1
44 #define STACKSIZE ( CYGNUM_HAL_STACK_SIZE_TYPICAL + 4096 )
45
46 /* STATICS */
47
48 static cyg_handle_t thread[NTHREADS];
49 static cyg_thread thread_obj[NTHREADS];
50 static char stack[NTHREADS][STACKSIZE];
51
52 /* FUNCTIONS */
53
54 static void simple_prog(CYG_ADDRESS data)
55 {
56 cyg_io_handle_t handle;
57 Cyg_ErrNo err;
58 const char test_string[] = "serial example is working correctly!\n";
59 cyg_uint32 len = strlen(test_string);
60
61 printf("Starting serial example\n");
62
63 err = cyg_io_lookup( "/dev/haldiag", &handle );
64
65 if (ENOERR == err) {
66 printf("Found /dev/haldiag. Writing string....\n");
67 err = cyg_io_write( handle, test_string, &len );
68 }
69
70 if (ENOERR == err) {
71 printf("I think I wrote the string. Did you see it?\n");
72 }
73
74 printf("Serial example finished\n");
75
76 }
77
78 void cyg_user_start(void)
79 {
80 cyg_thread_create(4, simple_prog, (cyg_addrword_t) 0, "serial",
81 (void *)stack[0], STACKSIZE, &thread[0], &thread_obj[0]);
82 cyg_thread_resume(thread[0]);
83 }