FORGOT YOUR DETAILS?

CREATE ACCOUNT

Unison Help

  1. Unison Kernel
    1. Pthreads
      1. pthread_create()
      2. pthread_exit()
      3. pthread_self()
      4. pthread_equal()
      5. pthread_join()
      6. pthread_detach()
      7. pthread_setschedparam()
      8. pthread_getschedparam()
      9. pthread_attr_init()
      10. pthread_attr_destroy()
      11. pthread_attr_setstackaddr()
      12. pthread_attr_getstackaddr()
      13. pthread_attr_setstacksize()
      14. pthread_attr_getstacksize()
      15. pthread_attr_setschedparam()
      16. pthread_attr_getschedparam()
      17. pthread_attr_setdetachstate()
      18. pthread_attr_getdetachstate()
      19. pthread_stackinfo()
      20. pthread_setprio()
      21. pthread_getprio()
      22. sched_get_priority_max()
      23. sched_get_priority_min()
      24. sched_yield()
    2. Pthread Cancellation
      1. pthread_cleanup_pop()
      2. pthread_cleanup_push()
      3. pthread_cancel()
      4. pthread_setcanceltype()
      5. pthread_setcancelstate()
      6. pthread_testcancel()
    3. Mutex
      1. pthread_mutex_init()
      2. pthread_mutex_destroy()
      3. pthread_mutex_lock()
      4. pthread_mutex_trylock()
      5. pthread_mutex_unlock()
    4. Semaphores
      1. sem_open()
      2. sem_close()
      3. sem_unlink()
      4. sem_init()
      5. sem_destroy()
      6. sem_wait()
      7. sem_trywait()
      8. sem_timedwait()
      9. sem_post()
      10. sem_getvalue()
    5. Message Queues
      1. mq_open()
      2. mq_close()
      3. mq_unlink()
      4. mq_send()
      5. mq_receive()
      6. mq_notify()
      7. mq_setattr()
      8. mq_getattr()
      9. mq_timedreceive()
      10. mq_timedsend()
    6. Conditional Variables
      1. pthread_cond_init()
      2. pthread_cond_destroy()
      3. pthread_cond_wait()
      4. pthread_cond_timedwait()
      5. pthread_cond_signal()
      6. pthread_cond_broadcast()
      7. pthread_condattr_init()
      8. pthread_condattr_destroy()
    7. Barriers
      1. pthread_barrier_init()
      2. pthread_barrier_destroy()
      3. pthread_barrier_wait()
    8. Timers
      1. timer_create()
      2. timer_delete()
      3. timer_settime()
      4. timer_gettime()
      5. timer_getoverrun()
      6. timer_tick()
      7. nanosleep()
    9. Clocks
      1. time()
      2. uptime()
      3. sleep()
      4. clock_settime()
      5. clock_gettime()
      6. clock_getres()
      7. clock_init()
    10. Memory Allocation
      1. POSIX.1
        1. malloc()
        2. free()
      2. Variable Length (Pools)
        1. pool_create()
        2. pool_destroy()
        3. pool_alloc()
        4. pool_free()
      3. Fixed Length (Partitions)
        1. pt_create()
        2. pt_destroy()
        3. pt_getblock()
        4. pt_freeblock()
    11. Rendezvous
      1. mr_init()
      2. mr_send()
      3. mr_receive()
      4. mr_reply()
      5. mr_sigrecv()
      6. mr_sigpost()
    12. Interrupts
      1. interrupts
      2. i_disable()
      3. i_restore()
    13. Directory Services
      1. dir_register()
      2. dir_deregister()
      3. dir_lookup()
      4. dir_lookup_string()
    14. Miscellaneous
      1. checkIstack()
      2. NanoStart() or DSPexec_Start()
      3. _isrStackFill
      4. Kernel Scaling
      5. kfatal()
      6. kalloc()
      7. kfree()
      8. mpu or mmu
      9. pthreadStackFill
      10. thread_numb()
      11. thread_utilization_start()
      12. thread_utilization_stop()
      13. xprintf()
      14. xputs()
      15. xputchar()
  2. Unison I/O Library
    1. accept()
    2. bind()
    3. chmod()
    4. close()
    5. connect()
    6. creat()
    7. fstat()
    8. getpeername()
    9. getsockname()
    10. getsockopt()
    11. ioctl()
    12. link()
    13. listen()
    14. lseek()
    15. mkdir()
    16. mkfs()
    17. mount()
    18. open()
    19. read()
    20. recv()
    21. recvfrom()
    22. rename()
    23. renameat()
    24. rmdir()
    25. select()
    26. send()
    27. sendto()
    28. setsockopt()
    29. shutdown()
    30. socket()
    31. stat()
    32. sync()
    33. umount()
    34. unlink()
    35. write()
  3. Unison STDIO Library
    1. STDIO Library Calls
      1. clearerr()
      2. dprintf()
      3. fclose()
      4. fdopen()
      5. feof()
      6. ferror()
      7. fileno()
      8. fflush()
      9. fgetc()
      10. fgetpos()
      11. fgets()
      12. fopen()
      13. fprintf()
      14. fputc()
      15. fputs()
      16. fread()
      17. freopen()
      18. fscanf()
      19. fseek()
      20. fseeko()
      21. fsetpos()
      22. ftell()
      23. ftello()
      24. fwrite()
      25. getc()
      26. getc_unlocked()
      27. getchar()
      28. getchar_unlocked()
      29. getdelim()
      30. getline()
      31. gets()
      32. get_stderr_ptr()
      33. get_stdin_ptr()
      34. get_stdout_ptr()
      35. noperprintf()
      36. perprintf()
      37. perror()
      38. posix_compat()
      39. printf()
      40. putc()
      41. putc_unlocked()
      42. putchar()
      43. putchar_unlocked()
      44. puts()
      45. remove()
      46. rewind()
      47. scanf()
      48. setbuf()
      49. setvbuf()
      50. snprintf()
      51. sprintf()
      52. sscanf()
      53. stderr_init()
      54. stderr_close()
      55. stdin_init()
      56. stdin_close()
      57. stdout_init()
      58. stdout_close()
      59. vdprintf()
      60. vscanf()
      61. vsscanf()
      62. vfscanf()
      63. vprintf()
      64. vsnprintf()
      65. vsprintf()
      66. vfprintf()
      67. ungetc()
    2. Do-nothing Stubs
      1. ctermid()
      2. flockfile()
      3. fmemopen()
      4. ftrylockfile()
      5. open_memstream()
      6. pclose()
      7. popen()
      8. tempnam()
      9. tmpfile()
      10. tmpnam()
  4. Unison LIBC Library
    1. LIBC Library Calls
      1. assert()
      2. realloc()
      3. strcasecmp()
      4. strdup()
      5. strncasecmp()
      6. strftime()
    2. Do-nothing Stubs
      1. abort()
      2. execve()
      3. exit()
      4. _Exit()
      5. fork()
      6. getpid()
      7. isatty()
      8. kill()
      9. sbrk()
      10. times()
      11. wait()
    3. Do-nothing Wide-character Stubs
      1. <wchar.h>
      2. <wctype.h>
  5. Unison I/O Servers
    1. File Servers
      1. Multimedia File Server - fsys
      2. FAT File System - fatfs
      3. NAND File Server - nandfsys
      4. NOR File Server - norfsys
      5. Network File Server - nfs
  6. Graphics, Camera, Video, Audio
    1. Vendor Graphics
    2. Prism++ Graphics
    3. ADPCM Services - adpcmd
    4. Camera
  7. Network Protocols
    1. TCP and UDP Server - tcpd
      1. IPv4 only server
      2. IPv4/IPv6 server
    2. DHCP Client Service - dhcp client
    3. DHCP Server - dhcpd
    4. Telnet Server - telnetd
    5. Tiny FTP Server - tftpd
    6. Point to Point - pppd
    7. Network Translation - NAT with PAT
    8. Firewall
      1. Packet filter: pf
      2. Packet filter control: pfctl
      3. Fitler rules: pf.filtering
      4. Translation rules: pf.nat
    9. Tiny HTTP Server - thttpd
    10. Tiny HTTP Server with TLS
    11. POP3 Server
    12. Simple Mail Transfer Protocol Services (SMTP)
    13. Bootp Protocol
    14. File Transfer Protocol Server (FTP)
    15. File Transfer Client Services
    16. RPC / XDR
    17. DNS Client
    18. HTTP/HTTPS Client
    19. REST Client
    20. AutoIP Service - autoip client
    21. mDNS server - mdnsd
    22. SNTP Client
    23. SNMP Agent - Snmpd server
    24. SSL/TLS library
    25. SSH server
    26. IP security
      1. IPsec description
      2. IPsec administration: ipsecadm
      3. Virtual Private Network: VPN
    27. Power Control
      1. Motor and Motion Control Servers
      2. PWM, Encoders
    28. Serial I/O
      1. Asynchronous Serial I/O Server - ttyserver
      2. CAN Server - cand
      3. I2C Server - i2cd
      4. I2S Server - i2sd
    29. System Services
      1. Power Management Servers
      2. Login Service - login_services
      3. XML
      4. POSIX Shell and Login Service - posh
    30. Universal Serial Bus (USB)
      1. USB Server
      2. USB Device Server
      3. USB Embedded Host Server
    31. Wireless
      1. Wireless Servers and Drivers
      2. 802.15.4 Radio Servers
      3. TCP/v6 with 6loWPAN
      4. ZigBee
      5. BlueTooth Server
      6. 802.11 Wi-Fi
      7. GPRS, UHF and GPS Radio Servers
    32. Remedy Tools for Unison
      1. Remedy Data Logging and Event Display Tools
      2. Remedy Diagnostics
      3. Remedy Flash Downloader/Bootloader
      4. Remedy Power On Self Test - POST
      5. Remedy OS Object Viewer
      6. Remedy Remote Control Tools

7.29.4.POSIX Shell and Login Service - posh #

NAME

POSIX Shell Server and Login Services – posh

SYNOPSIS

#include <posh_init.h>

pthread_create(&poshTid, &poshattr, (void*(*)(void*))posh, set_posh_tty);
int posh(void *ptr_posh_init)
int add_user( char *user, char * pswd )
int delete_user( char *user)
int check_password( char *user, char * pswd )
int update_password( char *user, char * oldpswd, char * pswd )

 

DESCRIPTION

The posh server provides a shell for user interaction via telnet or serial file I/O. Typically, when initialized, it allows users to query files, examine the file structure, create new files and look at the content of files. It is a minimal implementation for memory reasons. It does not support scripting of any kind and only supports a minimal set of commands.

The posh server inputs characters and outputs results of command requests. The first command request is a login request. Unlike many implementations, the login support is contained within posh – it does not have a separate thread for this purpose. The .login file is specified at posh creation time in the initialization structure.

The initialization structure also specifies the mount points for two file systems. These mount points are important to avoid attempts to list non-existent files. Setup these mount points at creation time for proper operation.

The final elements of the initalization structure are the input and output streams. These two are specified as files. The structure is shown below.

The login services are provided by the posh server library. These login services allow users to identify users and passwords, update users and passwords and create new password files. These functions are usable when posh is included in the system.

For description of fuctions add_user(), delete_user(), check_password(), update_password() see login manpage.

 

SPECIFIC OPTIONS (Compile time)

Option Default Description Values
APPLOADER_SUPPORT 1 Enables support of apploader in POSH. Dec: 0 | 1

 

RETURN VALUES

All login functions return 0 on success, -2 on a missing user if the password is being updated and -1 on all other conditions like missing login file or failed user – password.

 

ERRORS

All errors are handled by the return values.

 

EXAMPLE

Posh initialization structure.

struct set_posh
{
    char *stdinstring;          // set the input stream
    char *stdoutstring;         // set output stream
    char *mountpoint;           // set first file mount point
    char *mountpoint2;          // set second file mount point
    char *loginfile;
};

This partial example shows the creation and registration of the posh server. After creation, posh may be accessed via the serial port setup for input and output.

THREAD Main(void *arg)
{
	int mystatus;

	pthread_t poshTid;
	pthread_attr_t poshattr;
	struct sched_param poshPriority;
	struct set_posh *set_posh_tty;

	xprintf("Start Main\n");

	posix_compat("", "/dev/ttyS0", "/dev/ttyS0");

	printf("Start tty, fsys with posix_compat\n");

	// insert posh here and see what we get...

	// first fill the files so we can play
	filetest();

	pthread_attr_init(&poshattr);
	pthread_attr_setstacksize(&poshattr, 1400);
	poshPriority.sched_priority = 6;
	pthread_attr_setschedparam(&poshattr, &poshPriority);
	
	if( (set_posh_tty = malloc(sizeof(struct set_posh)))==NULL)
	{
		xprintf("posh create - no memory\n");
		pthread_exit(0);
	}
	set_posh_tty->stdinstring = "/dev/ttyS0";
	set_posh_tty->stdoutstring = "/dev/ttyS0";
	set_posh_tty->mountpoint = "/dev/rd/d1";
	set_posh_tty->mountpoint2 = NULL;
	set_posh_tty->loginfile = "/dev/rd/d1/.login";

	mystatus = pthread_create(&poshTid, &poshattr, (void*(*)(void*))posh, set_posh_tty);
	if (mystatus != 0)
	{
	    xprintf("pthread_create = %d\n", errno);
	}
	pthread_attr_destroy(&poshattr);

	pthread_exit(0);
	return 0;	//just to avoid warning
}

 

COMMANDS AND OPTIONS

  • help – help listing
  • alias [alias_name=”value”] – setup an alias for an expression
  • cat – concatenate output
  • cd <dir> – change directory to <dir>
  • chmod <mode> <dir | file> – change a file’s access control mode

    mode – file access mode, for example “rwx”

    dir | file – path to the target file to which mode is setting

  • cp <src> <dst> – copy a file from <src> path to <dst> path
  • exit – exit the posh shell
  • ln <src> <dst> – create link to file

    src – target path for link

    dst – link name (with path)

  • logout – logout of posh
  • ls [option] – list directory contents

    -l – for long list

    -d – lists directories, not content

  • mkdir <dir> – make a directory specified by <dir>
  • mv <src> <dst> – move a file from <src> path to <dst> path
  • printenv [env_name] – print all or part of environment

    printenv [VARIABLE] or printenv OPTION

    If VARIABLE or OPTION not specified, then all present will be printed

  • pwd – present working directory
  • rm <file> – remove a file
  • rmdir – remove a directory
  • setenv [env_name=”value”] – set an environment variable

    Example: setenv PATH “/d0:/sd/d1:/sd/d1/d2”

  • unalias <alias_name> – delete an alias
  • useradd <username> <password> – add a user with a password
  • userdel <username> – delete a user
  • userpasswd <username> <oldpassword> <newpassword> – set (or reset) a user password

 

NOTES

There is a demo available for the Unison and DSPnano posh server which is found in installdir/demos and a second demo available with the telnet server which uses posh for command interpretation.

 

SEE ALSO

telnetd, login

Suggest Edit

CONTACT US

TO GET YOUR PROJECT STARTED

TOP