09-19-2005
how to round up a memory address(memory alignment problem)
Hi, I try to marshal a unsigned int and a char * into a buffer, and then unmarshal them later to get them out. I need to put the char * in the front and unsigned int at the end of the buffer. However, my system always give me "BUS ERROR". I am using Sun Sparcs Sloris 2.10.
My code to marshal the data:
unsigned dev = 111;
unsigned inode = 222;
int s_docname = strlen(docname) + 1;
int s_key = s_docname + sizeof(unsigned) * 2;
keybuf = malloc(s_key);
memset(keybuf, 0, s_key);
memcpy(keybuf, docname, s_docname);
memcpy(keybuf + s_docname, &(dev), sizeof(unsigned));
memcpy(keybuf + s_docname + sizeof(unsigned), &(inode),
sizeof(unsigned));
My code to unmarshal the data:
char * docname = (char *)key.data;
int s_docname = strlen(docname) + 1;
dev =*((unsigned *)((char *)key.data + s_docname));
inode = *((unsigned *)((char *)key.data + s_docname +
sizeof(unsigned)));
I can print the dev and inode out in dbx debugger by typing the same
code, but running the program always have the BUS error.
I realize this is a problems of memory alignement. s_docname has byte granularity, somehow I need to "round up" my s_docname by some suitable calculation. But I really don't know how to? Help is appreciated.
10 More Discussions You Might Find Interesting
1. Solaris
Hi, I try to marshal a unsigned int and a char * into a buffer, and then unmarshal them later to get them out. I need to put the char * in the front and unsigned int at the end of the buffer. However, my system always give me "BUS ERROR". I am using Sun Sparcs Sloris 2.10.
My code to marshal the... (1 Reply)
Discussion started by: nj302
1 Replies
2. Programming
Hi All
I have a structure pointer and setting that pointer as NULL. When i tried to access the elements in the structure i am getting the error message.
"Cannot access memory at address 0x8". This i tried in LINUX.
When the same program is tried thro UNIX (HP-UX), i am not getting the message... (8 Replies)
Discussion started by: rkraj
8 Replies
3. Solaris
Hi,
The following error message occured when I was trying to reboot my SUN machine:
Memory address not aligned
Its a Sun 280 R , Ultra SPARC III
What should I do.
Varma (3 Replies)
Discussion started by: gunnervarma
3 Replies
4. Solaris
Hi,
Im working on Solaris 9 on SPARC-32 bit running on an Ultra-80, and I have to find out the following:-
1. Total Physical Memory in the system(total RAM).
2. Available Physical Memory(i.e. RAM Usage)
3. Total (Logical) Memory in the system
4. Available (Logical) Memory.
I know... (4 Replies)
Discussion started by: 0ktalmagik
4 Replies
5. Solaris
Is it possible to restrict physical memory in solaris zone with zone.max-locked-memory just like we can do with rcapd ? I do not want to used rcapd (1 Reply)
Discussion started by: fugitive
1 Replies
6. UNIX for Dummies Questions & Answers
hi,
For some special reason , I'd like to control the memory address for the shared libraries in my dynamically linked process.
And it is the "ld" which interpret the dynamically linked library, and in my system, the "ld-linux.so.2" is put at 0x00812000. Then I use "prelink -r" command to change... (0 Replies)
Discussion started by: zerocool_08
0 Replies
7. Linux
hi,
For some special reason , I'd like to control the memory address for the shared libraries in my dynamically linked process.
And it is the "ld" which interpret the dynamically linked library, and in my system, the "ld-linux.so.2" is put at 0x00812000. Then I use "prelink -r" command to... (3 Replies)
Discussion started by: zerocool_08
3 Replies
8. UNIX for Advanced & Expert Users
I want address of current virtual memory block?
i am using fedora10:wall::wall: (1 Reply)
Discussion started by: powyama
1 Replies
9. Solaris
Hi Experts,
Our servers running Solaris 10 with SAP Application. The memory utilization always >90%, but the process on SAP is too less even nothing.
Why memory utilization on solaris always looks high?
I have statement about memory on solaris, is this true:
Memory in solaris is used for... (4 Replies)
Discussion started by: edydsuranta
4 Replies
10. UNIX for Beginners Questions & Answers
How would I write a value to a physical memory address?
I was able to read a physical memory address (for example, 0x400) using this line:
dd if=/dev/mem count=4 bs=1 skip=$(( 0x400 ))
But I get an error:
dd: 'standard input': cannot skip to specified offset
when I try to write using... (1 Reply)
Discussion started by: rabrandt
1 Replies
LEARN ABOUT DEBIAN
winright
caca_conio_text_info(3caca) libcaca caca_conio_text_info(3caca)
NAME
caca_conio_text_info -
DOS text area information.
SYNOPSIS
Data Fields
unsigned char winleft
unsigned char wintop
unsigned char winright
unsigned char winbottom
unsigned char attribute
unsigned char normattr
unsigned char currmode
unsigned char screenheight
unsigned char screenwidth
unsigned char curx
unsigned char cury
Detailed Description
This structure stores text area information for the DOS conio.h compatibility layer.
Field Documentation
unsigned char caca_conio_text_info::winleft left window coordinate
unsigned char caca_conio_text_info::wintop top window coordinate
unsigned char caca_conio_text_info::winright right window coordinate
unsigned char caca_conio_text_info::winbottom bottom window coordinate
unsigned char caca_conio_text_info::attribute text attribute
unsigned char caca_conio_text_info::normattr normal attribute
unsigned char caca_conio_text_info::currmode current video mode: BW40, BW80, C40, C80, or C4350
unsigned char caca_conio_text_info::screenheight text screen's height
unsigned char caca_conio_text_info::screenwidth text screen's width
unsigned char caca_conio_text_info::curx x-coordinate in current window
unsigned char caca_conio_text_info::cury y-coordinate in current window
Author
Generated automatically by Doxygen for libcaca from the source code.
Version 0.99.beta18 Fri Apr 6 2012 caca_conio_text_info(3caca)