Sponsored Content
Top Forums UNIX for Dummies Questions & Answers portability of int arrays from 32 to 64 bit systems Post 302337204 by German1234 on Thursday 23rd of July 2009 03:21:58 PM
Old 07-23-2009
portability of int arrays from 32 to 64 bit systems

Dear All,
I'm porting my scientific program from 32 to 64 bit system
(use gcc, CentOS) and feel myself absolutely confused
after reading general internet advices for that. Could you help me,
please.

The question is:
can I use "old style" on 64 bit:
--------
int * myIntArray;
myIntArray = malloc (sizeof(int)*100000);
for (i=0;i<100000;i++)
myIntArray [i] = i*i;
int j=250;
int b=myIntArray [j];
--------

or should I use a more complicated construction like
--------
for (i=0;i<100000;i++)
myIntArray [(size_t) (i)] = i*i;
int j=250;
int b=myIntArray [(size_t) (j)];
--------
in this simple case throughout the code? Or that all is wrong?
And what should I do with arrays of doubles?

Trivial compilation on 64 bit system of my old code written for 32 bits
gives an executable file which can run, but shows numerical instability, and I'm trying to find the reason...

Thank you very much in advance!
Regards,
German
 

9 More Discussions You Might Find Interesting

1. Programming

A C program required for portability

I have to solve a problem for my wife who is engaged in Research in Breast Cancer. 1. She has frequently to search a long single line of alphabetic characters (lower case) for an exact match of a string. e.g.... (1 Reply)
Discussion started by: nmsinghe
1 Replies

2. Programming

difference between int ** func() and int *& func()

What is the difference between int** func() and int*& func(). Can you please explain it with suitable example. Thanks, Devesh. (1 Reply)
Discussion started by: devesh
1 Replies

3. UNIX for Dummies Questions & Answers

int open(const char *pathname, int flags, mode_t mode) doubt...

hello everybody! I want to create a file with permissions for read, write, and execute to everybody using C, so I write this code: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main(){ int fileDescriptor; fileDescriptor =... (2 Replies)
Discussion started by: csnmgeek
2 Replies

4. UNIX for Dummies Questions & Answers

Script portability

Hello, May I the right place if I need competencies to migrate DOS script into Unix platforme? Thanks in advance Thierry (9 Replies)
Discussion started by: tsconetti
9 Replies

5. Shell Programming and Scripting

portability issue linux(2.6) solaris10

the following simple scripts work fine on linux but fail on solaris: #!/bin/bash eval /usr/bin/time -f \'bt=\"%U + %S\"\' ./JUNK >> ./LOG 2>&1 cp ./LOG ./LOG_joe LC_joe=`cat ./LOG | wc -l` LC_joe=`echo $LC_joe-1|bc` tail -1 ./LOG > ./tmp head -$LC_joe ./LOG_joe > ./LOG rm ./LOG_joe ... (1 Reply)
Discussion started by: joepareti
1 Replies

6. Shell Programming and Scripting

Script Portability

Hi, I am writing a BASH shell script for a client. I am using BASH on a Macintosh Powerbook G4 running Leopard. My client will be using BASH on a PC running Ubuntu. My questions all revolve around making my script portable so that it will run on his machine. - Do I need to get any other... (2 Replies)
Discussion started by: msb65
2 Replies

7. Solaris

Convert DWORD to int on solaris for 64-bit

i am converting application from 32-bit to 64-bit on Solaris. How can I convert "DWORD" on Solaris 64-bit to int. Thanks. (1 Reply)
Discussion started by: amit_27
1 Replies

8. Programming

Handle int listen(int sockfd, int backlog) in TCP

Hi, from the manual listen(2): listen for connections on socket - Linux man page It has a parameter called backlog and it limits the maximum length of queue of pending list. If I set backlog to 128, is it means no more than 128 packets can be handled by server? If I have three... (3 Replies)
Discussion started by: sehang
3 Replies

9. Programming

question about int arrays and file pointer arrays

if i declare both but don't input any variables what values will the int array and file pointer array have on default, and if i want to reset any of the elements of both arrays to default, should i just set it to 0 or NULL or what? (1 Reply)
Discussion started by: omega666
1 Replies
ddi_model_convert_from(9F)				   Kernel Functions for Drivers 				ddi_model_convert_from(9F)

NAME
ddi_model_convert_from - determine data model type mismatch SYNOPSIS
#include <sys/ddi.h> #include <sys/sunddi.h> uint_tddi_model_convert_from(uint_t model); INTERFACE LEVEL
Solaris DDI specific (Solaris DDI). PARAMETERS
model The data model type of the current thread. DESCRIPTION
ddi_model_convert_from() is used to determine if the current thread uses a different C Language Type Model than the device driver. The 64-bit version of Solaris will require a 64-bit kernel to support both 64-bit and 32-bit user mode programs. The difference between a 32-bit program and a 64-bit program is in its C Language Type Model: a 32-bit program is ILP32 (integer, longs, and pointers are 32-bit) and a 64-bit program is LP64 (longs and pointers are 64-bit). There are a number of driver entry points such as ioctl(9E) and mmap(9E) where it is necessary to identify the C Language Type Model of the user-mode originator of an kernel event. For example any data which flows between programs and the device driver or vice versa need to be identical in format. A 64-bit device driver may need to modify the format of the data before sending it to a 32-bit application. ddi_model_convert_from() is used to determine if data that is passed between the device driver and the application requires reformatting to any non-native data model. RETURN VALUES
DDI_MODEL_ILP32 A conversion to/from ILP32 is necessary. DDI_MODEL_NONE No conversion is necessary. Current thread and driver use the same data model. CONTEXT
ddi_model_convert_from() can be called from any context. EXAMPLES
Example 1: : Using ddi_model_convert_from() in the ioctl() entry point to support both 32-bit and 64-bit applications. The following is an example how to use ddi_model_convert_from() in the ioctl() entry point to support both 32-bit and 64-bit applications. struct passargs32 { int len; caddr32_t addr; }; struct passargs { int len; caddr_t addr; }; xxioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp) { struct passargs pa; switch (ddi_model_convert_from(mode & FMODELS)) { case DDI_MODEL_ILP32: { struct passargs32 pa32; ddi_copyin(arg, &pa32, sizeof (struct passargs32), mode); pa.len = pa32.len; pa.address = pa32.address; break; } case DDI_MODEL_NONE: ddi_copyin(arg, &pa, sizeof (struct passargs), mode); break; } do_ioctl(&pa); .... } SEE ALSO
ioctl(9E), mmap(9E), ddi_mmap_get_model(9F) Writing Device Drivers SunOS 5.10 8 Feb 2001 ddi_model_convert_from(9F)
All times are GMT -4. The time now is 10:05 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy