xref: /plan9/sys/src/cmd/gs/jpeg/jmemnobs.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1*7dd7cddfSDavid du Colombier /*
2*7dd7cddfSDavid du Colombier  * jmemnobs.c
3*7dd7cddfSDavid du Colombier  *
4*7dd7cddfSDavid du Colombier  * Copyright (C) 1992-1996, Thomas G. Lane.
5*7dd7cddfSDavid du Colombier  * This file is part of the Independent JPEG Group's software.
6*7dd7cddfSDavid du Colombier  * For conditions of distribution and use, see the accompanying README file.
7*7dd7cddfSDavid du Colombier  *
8*7dd7cddfSDavid du Colombier  * This file provides a really simple implementation of the system-
9*7dd7cddfSDavid du Colombier  * dependent portion of the JPEG memory manager.  This implementation
10*7dd7cddfSDavid du Colombier  * assumes that no backing-store files are needed: all required space
11*7dd7cddfSDavid du Colombier  * can be obtained from malloc().
12*7dd7cddfSDavid du Colombier  * This is very portable in the sense that it'll compile on almost anything,
13*7dd7cddfSDavid du Colombier  * but you'd better have lots of main memory (or virtual memory) if you want
14*7dd7cddfSDavid du Colombier  * to process big images.
15*7dd7cddfSDavid du Colombier  * Note that the max_memory_to_use option is ignored by this implementation.
16*7dd7cddfSDavid du Colombier  */
17*7dd7cddfSDavid du Colombier 
18*7dd7cddfSDavid du Colombier #define JPEG_INTERNALS
19*7dd7cddfSDavid du Colombier #include "jinclude.h"
20*7dd7cddfSDavid du Colombier #include "jpeglib.h"
21*7dd7cddfSDavid du Colombier #include "jmemsys.h"		/* import the system-dependent declarations */
22*7dd7cddfSDavid du Colombier 
23*7dd7cddfSDavid du Colombier #ifndef HAVE_STDLIB_H		/* <stdlib.h> should declare malloc(),free() */
24*7dd7cddfSDavid du Colombier extern void * malloc JPP((size_t size));
25*7dd7cddfSDavid du Colombier extern void free JPP((void *ptr));
26*7dd7cddfSDavid du Colombier #endif
27*7dd7cddfSDavid du Colombier 
28*7dd7cddfSDavid du Colombier 
29*7dd7cddfSDavid du Colombier /*
30*7dd7cddfSDavid du Colombier  * Memory allocation and freeing are controlled by the regular library
31*7dd7cddfSDavid du Colombier  * routines malloc() and free().
32*7dd7cddfSDavid du Colombier  */
33*7dd7cddfSDavid du Colombier 
34*7dd7cddfSDavid du Colombier GLOBAL(void *)
jpeg_get_small(j_common_ptr cinfo,size_t sizeofobject)35*7dd7cddfSDavid du Colombier jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject)
36*7dd7cddfSDavid du Colombier {
37*7dd7cddfSDavid du Colombier   return (void *) malloc(sizeofobject);
38*7dd7cddfSDavid du Colombier }
39*7dd7cddfSDavid du Colombier 
40*7dd7cddfSDavid du Colombier GLOBAL(void)
jpeg_free_small(j_common_ptr cinfo,void * object,size_t sizeofobject)41*7dd7cddfSDavid du Colombier jpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject)
42*7dd7cddfSDavid du Colombier {
43*7dd7cddfSDavid du Colombier   free(object);
44*7dd7cddfSDavid du Colombier }
45*7dd7cddfSDavid du Colombier 
46*7dd7cddfSDavid du Colombier 
47*7dd7cddfSDavid du Colombier /*
48*7dd7cddfSDavid du Colombier  * "Large" objects are treated the same as "small" ones.
49*7dd7cddfSDavid du Colombier  * NB: although we include FAR keywords in the routine declarations,
50*7dd7cddfSDavid du Colombier  * this file won't actually work in 80x86 small/medium model; at least,
51*7dd7cddfSDavid du Colombier  * you probably won't be able to process useful-size images in only 64KB.
52*7dd7cddfSDavid du Colombier  */
53*7dd7cddfSDavid du Colombier 
54*7dd7cddfSDavid du Colombier GLOBAL(void FAR *)
jpeg_get_large(j_common_ptr cinfo,size_t sizeofobject)55*7dd7cddfSDavid du Colombier jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject)
56*7dd7cddfSDavid du Colombier {
57*7dd7cddfSDavid du Colombier   return (void FAR *) malloc(sizeofobject);
58*7dd7cddfSDavid du Colombier }
59*7dd7cddfSDavid du Colombier 
60*7dd7cddfSDavid du Colombier GLOBAL(void)
jpeg_free_large(j_common_ptr cinfo,void FAR * object,size_t sizeofobject)61*7dd7cddfSDavid du Colombier jpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject)
62*7dd7cddfSDavid du Colombier {
63*7dd7cddfSDavid du Colombier   free(object);
64*7dd7cddfSDavid du Colombier }
65*7dd7cddfSDavid du Colombier 
66*7dd7cddfSDavid du Colombier 
67*7dd7cddfSDavid du Colombier /*
68*7dd7cddfSDavid du Colombier  * This routine computes the total memory space available for allocation.
69*7dd7cddfSDavid du Colombier  * Here we always say, "we got all you want bud!"
70*7dd7cddfSDavid du Colombier  */
71*7dd7cddfSDavid du Colombier 
72*7dd7cddfSDavid du Colombier GLOBAL(long)
jpeg_mem_available(j_common_ptr cinfo,long min_bytes_needed,long max_bytes_needed,long already_allocated)73*7dd7cddfSDavid du Colombier jpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed,
74*7dd7cddfSDavid du Colombier 		    long max_bytes_needed, long already_allocated)
75*7dd7cddfSDavid du Colombier {
76*7dd7cddfSDavid du Colombier   return max_bytes_needed;
77*7dd7cddfSDavid du Colombier }
78*7dd7cddfSDavid du Colombier 
79*7dd7cddfSDavid du Colombier 
80*7dd7cddfSDavid du Colombier /*
81*7dd7cddfSDavid du Colombier  * Backing store (temporary file) management.
82*7dd7cddfSDavid du Colombier  * Since jpeg_mem_available always promised the moon,
83*7dd7cddfSDavid du Colombier  * this should never be called and we can just error out.
84*7dd7cddfSDavid du Colombier  */
85*7dd7cddfSDavid du Colombier 
86*7dd7cddfSDavid du Colombier GLOBAL(void)
jpeg_open_backing_store(j_common_ptr cinfo,backing_store_ptr info,long total_bytes_needed)87*7dd7cddfSDavid du Colombier jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info,
88*7dd7cddfSDavid du Colombier 			 long total_bytes_needed)
89*7dd7cddfSDavid du Colombier {
90*7dd7cddfSDavid du Colombier   ERREXIT(cinfo, JERR_NO_BACKING_STORE);
91*7dd7cddfSDavid du Colombier }
92*7dd7cddfSDavid du Colombier 
93*7dd7cddfSDavid du Colombier 
94*7dd7cddfSDavid du Colombier /*
95*7dd7cddfSDavid du Colombier  * These routines take care of any system-dependent initialization and
96*7dd7cddfSDavid du Colombier  * cleanup required.  Here, there isn't any.
97*7dd7cddfSDavid du Colombier  */
98*7dd7cddfSDavid du Colombier 
99*7dd7cddfSDavid du Colombier GLOBAL(long)
jpeg_mem_init(j_common_ptr cinfo)100*7dd7cddfSDavid du Colombier jpeg_mem_init (j_common_ptr cinfo)
101*7dd7cddfSDavid du Colombier {
102*7dd7cddfSDavid du Colombier   return 0;			/* just set max_memory_to_use to 0 */
103*7dd7cddfSDavid du Colombier }
104*7dd7cddfSDavid du Colombier 
105*7dd7cddfSDavid du Colombier GLOBAL(void)
jpeg_mem_term(j_common_ptr cinfo)106*7dd7cddfSDavid du Colombier jpeg_mem_term (j_common_ptr cinfo)
107*7dd7cddfSDavid du Colombier {
108*7dd7cddfSDavid du Colombier   /* no work */
109*7dd7cddfSDavid du Colombier }
110