Sponsored Content
Operating Systems Solaris "Device busy" When Reopening Serial Port Post 302581206 by Jim Ryan on Tuesday 13th of December 2011 10:09:28 AM
Old 12-13-2011
Thanks for the idea. I suppose the GC is a possibility to consider and it's easy with one simple line of code to ask the GC to collect the garbage (though it isn't deterministic whether it will comply with this request in a timely fashion.) But the references between my Java variables and the port objects, when severed, are severed immediately. The references between my app being immediately gone, "Device busy" should not occur. But I'll try your idea and see.

My next test will be similar to the simple test I mentioned above but will use two threads: one to open the port and one to close and reopen it, thus mocking up my actual app's logic. If this test shows it impossible for the second thread to do the reopen because of "Device busy," then it becomes clear that in Solaris, only the thread that opens the port can reopen it while that thread's containing app is running, other threads being disallowed.

---------- Post updated 12-13-11 at 10:09 AM ---------- Previous update was 12-12-11 at 10:50 AM ----------

I am able to generate a similar issue (PortInUseException) when running on Windows with certain unit tests. So, although the issue varies with OS, it is not isolated to Solaris. Moreover, I have been using Java Comm's library for serial ports. But now that I have switched to the RXTX library (which implements the same classes and method, so one only needs to change the namespace in one's code), then the problem goes away in Windows. I do not have an RXTX library for Solaris x86 yet, so I cannot report that result yet. Also, if I do not add an event listener to the serial port in my code (with SerialPort.addEventListener()), then I do not get the issue with either Java Comm or RXTX. Therefore, it seems that SerialPort.removeEventListener() does not work in JavaComm's implementation but does work in RXTX. This fellow found the issue, too: Day after day

I'll need to use a compilation of RXTX for my Solaris x86 machine now.

I do not see this as an OS issue per se, though it does vary in severity between Solaris and Windows. If I find that RXTX resolves the issue in Windows but not in Solaris then I will report that.
This User Gave Thanks to Jim Ryan For This Post:
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

serial port device path

hi. Im trying to install a switch. And the manual says i should type a command including a SerialPortDevicePath. which is the filepath to serial port used for connection. However.. nothing about how to find this info. Could anyone help me where to find this path? thx mr.T (6 Replies)
Discussion started by: tyskertøs
6 Replies

2. Emergency UNIX and Linux Support

Mapping between "Pseudo name" and "Logical device ID" in powerpath with SVM changed....

Dear All, I was having powerpath 5.2 on SUN server with SVM connected to CLARIION box.Please find the following output : root # powermt display dev=all Pseudo name=emcpower3a CLARiiON ID=CK200073400372 Logical device ID=60060160685D1E004DD97FB647BFDC11 state=alive; policy=CLAROpt;... (1 Reply)
Discussion started by: Reboot
1 Replies

3. Linux

Umount of a "busy" disk

A product I am working on manages storage. We are currently porting it from Solaris to Linux. The product allows its user, among other things, to add and remove file server volumes, where these volumes are exported using the NFS or the CIFS protocol. The problem is that when the user requests to... (5 Replies)
Discussion started by: dhzdh
5 Replies

4. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

5. UNIX for Dummies Questions & Answers

UNIX rm -rf error "rm: cannot remove `filename' : Device or resource busy"

Hi Everyone, I am trying to remove a directory: $ rm -rf directory_name/ rm: cannot remove `directory_name/filename': Device or resource busy What does this mean, and why can't I remove these files? I already tried moving into the directory, and removing the files individually, but I... (7 Replies)
Discussion started by: Anna_Z
7 Replies

6. Red Hat

Find out which eth or device belongs to interface "port 1 PCI 4"

Hi, I´ve given only this info to configure a network interface : "port 1 PCI 4" I´ve been searching for any kind of relationship in the system which allow me to find the etc that must be configured... Please, could anybody help me? rhxx:#/root# lspci |grep -i "PCI BRIDGE" 00:01.0 PCI... (0 Replies)
Discussion started by: pabloli150
0 Replies

7. SCO

NFS umount shows the "Device busy (Error 16)"

Hi there After making a backup copy of it sometimes happens that when I want to unmount an NFS indicates the error:umount: /path_mount busy: Device busy (Error 16) if I run lsoff, I can not find the process that is blocking the application. I'm using OpenServer 5.0.2c as one NFS server ... (14 Replies)
Discussion started by: flako
14 Replies

8. Solaris

How to remove a LUN in "Online Busy" state?

Hi all, I have a LUN that is in "Online Busy" when I issue the dev_gestate subcommand of luxadm: root@es088wb6:~# luxadm -v -e dev_getstate /dev/rdsk/c21t50050763090887FEd4s2 phys path = "/devices/pci@6c0/pci@1/pci@0/pci@4/SUNW,qlc@0/fp@0,0/ssd@w50050763090887fe,4:c,raw" ... (5 Replies)
Discussion started by: ludiegu
5 Replies

9. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies
ports(7)						 Miscellaneous Information Manual						  ports(7)

NAME
ports, port_names - Device (tty and lp) names for serial and parallel ports SYNOPSIS
Default Serial Ports: /dev/tty00 /dev/tty01 (not present on a single-port system) Parallel Port: /dev/lp0 DESCRIPTION
AlphaStation and AlphaServer systems provide one or two 9-pin serial communication ports. These ports are usually labelled 1 (COMM1) and 2 (COMM2), but they may be identified by different icons. Using the appropriate serial cable and terminator, you can connect a serial printer, external modem, or character-cell terminal to a serial port. Most AlphaStation and AlphaServer systems also provide one parallel port, for use with a parallel printer. When you add a device to your system, the installation documentation may instruct you to map the device pathname to the port. These devices are located in the /dev directory. For serial-line ports, the two default device pathnames are: This pathname always maps to 1, COMM1, the lowest port number, an icon for a terminal console, or the only serial port (on a single-port system). This pathname always maps to 2, COMM2, the next numbered port, or (if one serial port is labeled with an icon for a terminal console) the remaining serial port. If your system hardware has been extended to include additional serial ports, the pathnames /dev/tty02, /dev/tty03, and so forth, may also be available to you. However, most systems have only /dev/tty00 and /dev/tty01 as the device pathnames for serial ports. The one parallel port on an AlphaStation or AlphaServer may be labeled with the word printer or a printer icon. On some systems, the paral- lel port may not be labeled. The device pathname for the parallel port is /dev/lp0. Currently, Tru64 UNIX does not fully support parallel printers, so fewer devices are connected to this port as compared to serial ports. If you are connecting a terminal console to your system, it must be connected to the serial port mapped to /dev/tty00. For other serial devices, it does not matter which of the serial ports you choose for the connection. For example, suppose you are setting up a system that has two serial ports, labeled 1 and 2. You intend to use a serial-line terminal rather than a workstation monitor as the system console and also want to connect a serial-line printer to the system. In this case, you must connect the terminal to the port labeled 1 (with the device pathname /dev/tty00). Therefore, you must connect the printer to the remaining port labeled 2 (with the device pathname /dev/tty01). If, for the same type of system, you intend to use a workstation monitor as the system console, it does not matter which serial port you use for a serial-line printer or modem. In other words, you can connect the printer to either port 1 (with pathname /dev/tty00) or port 2 (with pathname /dev/tty01). When prompted to enter a /dev/tty** pathname by the lprsetup script or the Print configuration tool in the CDE Application Manager, you would specify /dev/tty00 if you connected the printer to port 1 or /dev/tty01 if you connected the printer to port 2. See the System Administration manual for more information on setting up consoles (including remote consoles) and printers. See the modem(7) reference page for more information on setting up modems. SEE ALSO
Commands: lprsetup(8) Devices: ace(7), modem(7) System Administration delim off ports(7)
All times are GMT -4. The time now is 05:31 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy